Frage Ubuntu: Lösche einen Teil der Wurzel .bash_history ohne Spuren


Die .bash_history-Datei von root könnte folgendermaßen aussehen:

line 1
line 2
line 3
line 4

Jetzt lösche ich die Zeilen 3 und 4

su
vim ~/.bash_history

#delete line 3 und 4 with dd
line 1
line 2

:wq

 EINGEBEN
 STRG  +  D

Aber wenn ich jetzt auf .bash_history schaue:

su
cat ~/.bash_history

#.bash_history
line 1
line 2
vim ~/.bash_history

Wie kann ich nur einen Teil des Verlaufs löschen, ohne dass die letzte Zeile angezeigt wird, in der ich die Datei bearbeitet habe?

Vielen Dank


0
2017-10-14 14:50


Ursprung




Antworten:


Benutzen:

su
 vim ~/.bash_history

Der Verlauf speichert den Befehl nicht, wenn er eine hat Raum vor.


Dies ist abhängig von der HISTCONTROL Variable. Standardmäßig (für root) ist es ignoredups:ignorespace.


4
2017-10-14 14:54



Ich habe heute etwas Neues gelernt! =) Ich habe nie gemerkt, dass es so einfach ist. +1 =) - Terrance
Erwähnenswert ist, dass dies abhängig von der HISTCONTROL Variable. Standardmäßig (auf Ubuntu, für root) ist es ignoredups:ignorespace aber das muss nicht sein. Auf vielen Systemen ist es leer für root (es ist eines der Dinge, die manche Admins für paranoid halten). - ssta
@ssta yeah Ich wusste, dass es eine Einstellung dafür gab, aber vergaß was es war. - Rinzwind


Wie bereits erwähnt, könntest du vor deinem Befehl ein Leerzeichen verwenden, aber das hängt davon ab HISTCONTROL Variable. Hier sind ein paar alternativen -

Sie können dem Terminal mitteilen, dass es den Aufzeichnungsverlauf stoppen und starten soll. Es kann mit diesen Befehlen gemacht werden -

set +o history      #stop recording history
set -o history      #start recording history

Wenn Sie bereits einige Befehle ausgeführt haben und vergessen haben, die Aufzeichnung zu beenden oder Speicherplatz zu verwenden, können Sie den Schreibvorgang dennoch anhalten .bash_history solange die Sitzung noch offen ist. Es wird in die Datei geschrieben, wenn Sie die Terminalsitzung schließen. So können Sie den aktuellen Sitzungsverlauf kurz vor dem Schließen der Sitzung (vor dem Beenden) löschen su in Ihrem Fall). Es kann mit diesem Befehl gemacht werden -

history -c

Eine extreme Option wäre, den Terminalprozess zu beenden, wenn Sie alle Befehle ausgeführt haben. Sie beenden den Prozess im Grunde, bevor er den Verlauf in die Datei schreiben kann.

kill -9 $$

$$ gibt die aktuelle Terminal-Prozess-ID und kill -9 wird diesen Prozess töten.


1
2017-12-06 11:20