Ich habe große Probleme, die Terminal-Historie von Bash so einzurichten, wie ich es möchte. Ich möchte keine doppelten Einträge haben und wenn ich einen Befehl eingebe, möchte ich, dass dieser gespeichert und die obigen Duplikate entfernt werden.
Das Problem ist, dass der history
Befehl mir zeigt, dass er so funktioniert, wie ich es möchte, aber sobald ich mich abmelde, kommen die Duplikate wieder zurück. Ich glaube, es wird nur die Geschichte an die bestehende angehängt. Ich habe diese Zeilen in meiner .bashrc
Datei:
HISTCONTROL=ignoreboth:erasedups
shopt -u histappend
Ich habe sogar versucht shopt
, Kommentare abzugeben, aber der Verlauf wird beim Abmelden immer noch angehängt. Wie kann der Verlauf genau so sein, wie er ist, bevor ich mich abmelde?
bash
command-history
Craig
quelle
quelle
Antworten:
Sie
erasedups
sollten in Bezug auf die Duplikate das tun, was Sie wollen. Beachten Sie nur, dass das Löschen von Duplikaten zum Zeitpunkt des Anhängens eines neuen Eintrags an den Verlauf ausgelöst wird und dass alle alten Vorkommen eines Befehls gelöscht werden, wobei nur die neuesten übrig bleiben.Beantwortung der Frage " Wie kann der Verlauf genau so sein, wie er ist, bevor ich mich abmelde? "
So wie ich das sehe, kann dies nur gelegentlich nützlich sein. (Warum sollten Sie sonst überhaupt den Verlauf verwenden?) Sie können dies durch Ausgabe tun
Dadurch werden alle aktuell im Speicher gespeicherten Verlaufseinträge gelöscht und der gesamte Verlauf erneut aus der Verlaufsdatei gelesen. Daher werden alle Befehle vergessen, die Sie seit der Anmeldung bei der aktuellen Shell-Sitzung ausgegeben haben. Ich finde es sehr nützlich in Situationen, in denen ich viele Tests durchführe (viele ähnliche Befehle, aber nicht wirklich Duplikate) und dann nicht möchte, dass meine Geschichte dadurch verfälscht wird - also habe ich einen Alias dafür in meinem
.bashrc
:(
hrr
als "Geschichte neu lesen" zu erinnern).quelle