Skip to main content

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