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

dieMethode history1: zeigtEinzelne mirEinträge daslöschen

gespeicherte
Passwort:

bash
~$# 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

bash
# 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

bash
~$# History in Datei schreiben
history -dw

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:

bearbeiten
~$(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

bash
# 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