history
Wenn Du einen einzelnen Eintrag aus der History der aktuellen Shell entfernen möchtest, hilft der Kommandozeilenschalter “-d” des History-Kommandos: Jede Kommandozeile hat in der History eine ID, anhand derer der entsprechende Eintrag gelöscht werden kann:
ich tippe aus Versehen das Passwort ein …
~$ MeinPasswort <-- Oops
-bash: MeinPasswort: command not found
die history zeigt mir das gespeicherte Passwort:
~$ history | tail -n 4
1004 ps ax | grep httpd
1005 clear
1006 MeinPasswort <-- =:-O
1007 history | tail -n 4
ich lösche den Eintrag mit der ID 1006:
~$ history -d 1006
jetzt ist das Passwort nicht mehr über history
zu sehen:
~$ history | tail -n 4
1005 clear
1006 history | tail -n 4
1007 history -d 1006
1008 history | tail -n 4
Puh - das sieht ja schon ganz gut aus. Allerdings bearbeitet das history-Kommando ausschließlich die History der aktuell laufenden Bash. Also die History, die die Shell nur für sich im Speicher vorhält.
Möglicherweise ist der ungewollte Eintrag aber bereits im Offline-Speicher der History gelandet - in der Datei ~/.bash_history
:
~$ tail -n 4 ~/.bash_history
clear
MeinPasswort <-- =:-O
history | tail -n 4
history | tail -n 4
Um sicherzugehen, dass der Eintrag wirklich vollständig entfernt wird, überschreibst Du die ~/.bash_history mit der History der aktuell laufenden Shell (dort hast Du den Eintrag ja gerade entfernt) mit dem Kommando history -w
.
~$ history -w
~$ tail -n 4 ~/.bash_history
clear
history | tail -n 4
history | tail -n 4
tail -n 4 ~/.bash_history