Die .bash_history-Datei von root kann 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
ENTER
CTRL + D
Aber wenn ich mir jetzt .bash_history anschaue:
su
cat ~/.bash_history
#.bash_history
line 1
line 2
vim ~/.bash_history
Wie kann ich also nur einen Teil des Verlaufs löschen, ohne dass in der letzten Zeile angezeigt wird, dass ich die Datei bearbeitet habe?
Danke
Antwort1
Verwenden:
su
vim ~/.bash_history
Der Verlauf speichert den Befehl nicht, wenn er eineRaumvor.
Dies hängt von der HISTCONTROL
Variable ab. Standardmäßig (für root) ist es ignoredups:ignorespace
.
Antwort2
Wie bereits erwähnt, können Sie vor Ihrem Befehl ein Leerzeichen verwenden, aber das hängt von HISTCONTROL
der Variable ab. Hier sind einige Alternativen -
Sie können dem Terminal sagen, dass es die Aufzeichnung des Verlaufs stoppen und starten soll. Dies können Sie mit diesen Befehlen tun:
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 stoppen oder Speicherplatz zu verwenden, können Sie das Schreiben in die Datei trotzdem stoppen, .bash_history
solange die Sitzung noch geöffnet ist. Es wird in die Datei geschrieben, wenn Sie die Terminalsitzung schließen. Sie können also den aktuellen Sitzungsverlauf löschen, kurz bevor Sie die Sitzung schließen ( su
in Ihrem Fall vor dem Beenden). Dies können Sie mit diesem Befehl tun -
history -c
Eine extreme Möglichkeit wäre, den Terminalprozess zu beenden, wenn Sie mit der Ausführung aller Befehle fertig sind. Sie beenden den Prozess im Grunde, bevor er den Verlauf in eine Datei schreiben kann.
kill -9 $$
$$
gibt die aktuelle Terminalprozess-ID an und kill -9
beendet diesen Prozess.