Um einen einzelnen Befehl in Ihrem Verlauf nicht zu speichern, müssen Sie ihm lediglich ein Leerzeichen voranstellen (hier markiert ␣):
$ echo test
test
$ history | tail -n2
3431 echo test
3432 history | tail -n2
$ ␣echo test2
test2
$ history | tail -n2
3431 echo test
3432 history | tail -n2
Dieses Verhalten wird in Ihrer ~/.bashrcDatei festgelegt, und zwar in der folgenden Zeile:
HISTCONTROL=ignoreboth
man bash sagt:
HISTCONTROL
Eine durch Doppelpunkte getrennte Liste von Werten, die steuern, wie Befehle in der Verlaufsliste gespeichert werden. Wenn die
Werteliste Unbeachtung enthält , werden Zeilen, die mit einem Leerzeichen beginnen, nicht in der Verlaufsliste gespeichert . Ein Wert von ignoredups bewirkt, dass Zeilen, die mit dem vorherigen Verlaufseintrag übereinstimmen, nicht gespeichert werden. Ein Wert von
ignoreboth ist eine Abkürzung für ignorespace und ignoredups .
ignoredupsübrigens ist der grund warum history | tail -n2im obigen test nur einmal in der geschichte auftaucht.
Der Verlauf eines Terminals wird im RAM gespeichert und nach dem ~/.bash_historySchließen des Terminals an Ihren Computer gesendet. Wenn Sie einen bestimmten Eintrag aus Ihrem löschen möchten, können ~/.bash_historySie dies tun mit sed:
# print every line…
sed '/^exit$/!d' .bash_history # … which is just “exit”
sed '/^history/!d' .bash_history # … beginning with “history”
sed '/>>log$/!d' .bash_history # … ending with “>>log”
sed '\_/path/_!d' .bash_history # … containing “/path/” anywhere
In der letzten habe ich das Standardtrennzeichen /in geändert , _da es im Suchbegriff verwendet wird. Tatsächlich ist dies gleich sed -i '/\/path\//d' .bash_history. Wenn der Befehl nur die zu löschenden Zeilen ausgibt, fügen Sie die -iOption hinzu und ändern Sie !dsie d, um den Löschvorgang durchzuführen:
# delete every line…
sed -i '/^exit$/d' .bash_history # … which is just “exit”
sed -i '/^history/d' .bash_history # … beginning with “history”
sed -i '/>>log$/d' .bash_history # … ending with “>>log”
sed -i '\_/path/_d' .bash_history # … containing “/path/” anywhere