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
dieMethode history1: zeigtEinzelne mirEinträge daslöschen
~$# Zeige die letzten 20 Einträge mit Nummern an
history | tail -n 420
1004# psLösche axeinzelne |Einträge grepmit httpdihrer 1005Nummer
clearhistory 1006-d MeinPasswortNUMMER
Methode 2: Mehrere Einträge auf einmal löschen
# Lösche die letzten 20 Einträge
for i in {1..20}; do history --d =:-O
1007 $(history | tail -n 41 | awk '{print $1}'); done
ichMethode lösche3: denBereich Eintrag mitaus der IDHistory-Datei 1006:entfernen
~$# History in Datei schreiben
history -dw
1006jetzt 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 4Puh - 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:
~$(z.B. tailmit -nnano 4oder vim)
nano ~/.bash_history
clear# MeinPasswortLösche <--die =:-Ogewünschten Zeilen manuell
# History neu laden
history | tail -n 4c
history | tail -n 4r
UmMethode sicherzugehen,4: dass der Eintrag wirklich vollständig entfernt wird, überschreibst DuKomplett die History löschen
# Aktuelle Session History löschen
history -c
# History-Datei leeren
cat /dev/null > ~/.bash_history
mit der# History derneu aktuell laufenden Shell (dort hast Du den Eintrag ja gerade entfernt) mit dem Kommando history -w.
~$laden
history -w
~$ tail -n 4 ~/.bash_history
clear
history | tail -n 4
history | tail -n 4
tail -n 4 ~/.bash_historyr