Ich arbeite unter Mac OS X, also benutze ich wohl Bash ...?
Manchmal gebe ich etwas ein, an das ich mich in der Geschichte nicht erinnern möchte. Wie entferne ich es?
bash
shell
command-line
command-history
B Sieben
quelle
quelle
Antworten:
Vorbeugende Maßnahmen
Wenn Sie einen Befehl ausführen möchten, ohne ihn im Verlauf zu speichern, müssen Sie ihm ein zusätzliches Leerzeichen voranstellen
Dafür benötigen Sie entweder
ignorespace
oderignoreboth
inHISTCONTROL
. Führen Sie beispielsweise ausUm diese Einstellung dauerhaft zu erhalten, legen Sie sie in Ihrer
.bashrc
.Obduktionssanierung
Wenn Sie den Befehl bereits ausgeführt haben und ihn aus dem Verlauf entfernen möchten, verwenden Sie zuerst
um die Liste der Befehle in Ihrem Verlauf anzuzeigen. Suchen Sie die Nummer neben der Nummer, die Sie löschen möchten (z. B. 1234), und führen Sie sie aus
Wenn die zu löschende Zeile bereits in Ihre $ HISTFILE geschrieben wurde (was normalerweise geschieht, wenn Sie eine Sitzung standardmäßig beenden), müssen Sie in $ HISTFILE zurückschreiben, oder die Zeile wird erneut angezeigt, wenn Sie eine neue öffnen Session:
quelle
history -a
. In diesem Fall wird es bereits in die Verlaufsdatei geschrieben und nicht beim Beenden in der normalen Konfiguration. Insbesondere: mywiki.wooledge.org/BashFAQ/088history -w
. Andernfalls ist die gelöschte Zeile beim Verlassen noch vorhanden!history -w
Afterhistory -d {num}
war genau das, was ich brauchte - dieses kritische Leckerbissen sollte der Antwort hinzugefügt werden, sonst könnte ein Benutzer denken, dass ein temporäres Löschen aus der aktuellen Shell tatsächlich permanent ist.history -w
ist für Einträge erforderlich, die bereits in die.bash_history
Datei geschrieben wurden. So reproduzieren Sie (z. B. unter CentOS 7 mit Standardkonfiguration): 1. Anmelden 2. Befehl eingebenecho foo
3. Abmelden 4. Erneut anmelden 5. Eintrag löschen fürecho foo
6. Abmelden 7. Erneut anmelden: Eintrag ist noch vorhanden. Je nachdem, wie Sie Ihren Bash-Verlauf konfiguriert haben, können Sie dieses Problem möglicherweise auf andere Weise reproduzieren - z. B. wenn Sie das Schreiben des Verlaufs vor dem Abmelden provozieren.Verwenden Sie, um den gesamten Verlauf zu löschen
Verwenden Sie, um eine einzelne Zeile zu löschen
quelle
Ich habe dies in meinem
~/.bashrc
, was bewirkt, dass der Befehl$ forget
den vorherigen Befehl aus dem Verlauf löschtquelle
history -d $( history | tail -n 1 | cut -f 1 -d " " )
einfacher?history | tail -n1
ist derhistory
Befehl selbst, so dass das Löschen dieser Nummer den falschen Eintrag erhält. Allerdingshistory -d $( history | awk 'END{print $1-1}' )
verbindet die Zeilenauswahl, Feldauswahl, und Subtraktion.Sie können Einträge immer bearbeiten und daraus entfernen. Dies
~/.bash_history
ist nützlich, wenn Sie einen oder mehrere Einträge entfernen möchtenquelle
Wenn Sie die gesamte Bash-Sitzung vergessen möchten, können Sie
kill
den aktuellen Bash-Vorgang ausführen. Da die Variable$$
diepid
der aktuellen Shell enthält, können Sie Folgendes tun:quelle
Sie müssen die Änderungen schreiben, nachdem Sie den Verlauf gelöscht haben. Und wenn Sie den Befehl "history wipe" nicht in Ihrem Verlauf haben möchten, müssen Sie den Befehl folgendermaßen ausführen:
history -c && history -w && logout
Viel Glück.
quelle
quelle