Wie lösche ich den Terminalverlauf?


93

Ich benutze Linux Mint 17.1 Rebecca für ungefähr 2 Tage und habe versehentlich mein Passwort in das Terminal eingegeben, das jetzt in der Verlaufsliste der zuvor eingegebenen Befehle angezeigt wird.

Ich möchte den Terminalverlauf vollständig löschen. Ich habe versucht, die folgenden Befehle im Terminal zu verwenden, von denen ich dachte, dass sie den Verlauf für immer löschen würden, aber sie tun es nicht:

history -c
reset
tput reset

Die obigen Befehle "löschen" den Verlauf aus dem Terminal, aber wenn ich einen neuen beende und eröffne, ist mein gesamter vorheriger Verlauf immer noch da und kann mit dem Befehl - history und auch durch Drücken des Aufwärtspfeils auf meiner Tastatur wieder aufgelistet werden . Ich möchte nicht, dass dies passiert, bis ich meine Historie vollständig gelöscht habe, dann möchte ich sie weiter verwenden.

Wie kann ich meine Terminal-Historie vollständig löschen - für immer und von vorne anfangen?

Bitte beachten Sie: Ich möchte das Terminal nicht verlassen, ohne den Verlauf zu speichern, sondern nur für immer löschen.


1
sed -i "s/$your_pass//g" ~/.bash_history...
jasonwryan

3
@ jasonwryan Das allein würde das Problem nicht lösen, da der sed-Befehl in der Shell-Geschichte enden würde.
Gilles

1
Ich habe versucht, den Code von @jasonwryan zu verwenden, habe aber Folgendes erhalten: sed: -e expression # 1, char 0: kein vorheriger regulärer Ausdruck, von dem ich glaube, dass ich weiß warum, und das hat mich dazu veranlasst, nach einer Suche und einigem Herumspielen zu suchen: cat / dev / null> ~ / .bash_history && history -c && exit
Shambhala

1
@Gilles: Sie haben Recht: Vor dem Befehl soll ein Leerzeichen stehen ...
jasonwryan

Antworten:


145

resetoder macht tput resetnur dinge zum terminal. Der Verlauf wird vollständig von der Shell verwaltet, die davon nicht betroffen ist.

history -cLöscht Ihren Verlauf in der aktuellen Shell. Das ist genug (aber übertrieben), wenn Sie gerade Ihr Passwort eingegeben haben und diese Shell nicht verlassen oder ihren Verlauf explizit gespeichert haben.

Wenn Sie bash beenden, wird der Verlauf in der Verlaufsdatei gespeichert, die sich standardmäßig .bash_historyin Ihrem Ausgangsverzeichnis befindet . Genauer gesagt wird der Verlauf, der während der aktuellen Sitzung erstellt wurde, an die Datei angehängt. Einträge, die bereits vorhanden sind, bleiben davon unberührt. Führen Sie den folgenden Befehl aus, um die Verlaufsdatei mit dem Verlauf der aktuellen Shell zu überschreiben history -w.

Anstatt alle Ihre Verlaufseinträge zu entfernen, können Sie sie .bash_historyin einem Editor öffnen und die Zeilen entfernen, die Sie nicht behalten möchten. Sie können dies auch in bash tun, indem Sie historyalle Einträge anzeigen, history -ddie nicht gewünschten Einträge löschen und schließlich history -wspeichern.

Beachten Sie, dass Ihr Kennwort möglicherweise auch nach dem Bearbeiten der Verlaufsdatei noch irgendwo auf der Festplatte einer früheren Version der Datei vorhanden ist. Es kann nicht mehr über das Dateisystem abgerufen werden, aber es ist möglicherweise immer noch möglich (aber wahrscheinlich nicht einfach), es durch direkten Zugriff auf die Festplatte zu finden. Wenn Sie dieses Kennwort an einer anderen Stelle verwenden und Ihre Festplatte gestohlen wird (oder jemand Zugriff auf die Festplatte erhält), kann dies ein Problem sein.


1
Ich mag Ihre Antwort und werde, wie Sie mir sagten, einige Dinge akzeptieren, von denen ich nicht wusste, dass sie sehr nützlich sind. Ich werde auch mein Passwort ändern!
Shambhala

Geben Sie zunächst historyden Inhalt des Verlaufsprotokoll und den Zeilennummern Sie löschen möchten , um zu überprüfen, sollte Sie die Zeilennummer 1000 in der Verlaufsprotokoll löschen, dannhistory -d 1000
Claude COULOMBE

Wenn ich die .bash_history-Datei direkt ändere, zeigt der history-Befehl weiterhin Befehle wie vor der Änderung an, bis ich mich
ab-

35

Ich habe die Geschichte ausprobiert, aber die Geschichte kehrt zurück, sobald wir sie verlassen und wieder geöffnet haben. Das hat mir geholfen.

cat /dev/null > ~/.bash_history && history -c && exit

Dadurch werden der in der Verlaufsdatei gespeicherte Verlauf sowie der Verlauf in der aktuellen Sitzung gelöscht (sodass er beim bashBeenden nicht in einer Datei gespeichert wird ). Es verlässt dann die Shell. Die nächste Shell-Sitzung hat keine Historie.


18

Anstatt alle Ihre Verlaufseinträge zu entfernen, geben Sie diese Befehle in Ihr Terminal ein:

  1. history -c (zum Löschen des Verlaufs)
  2. history -w (Verlauf speichern)

Dies wird mit zsh nicht ausreichen, wenn inc_append_historyoder die share_historyOption gesetzt ist.
Saga

5

Da hier ein Sicherheitsproblem vorliegt, sollten Sie in Betracht ziehen, die Verlaufsdatei sicher zu löschen.

$ shred -u ~/.bash_history && touch ~/.bash_history

3

Als Neuling mit dem gleichen Problem habe ich auf das ziemlich brutale Mittel zurückgegriffen, die Verlaufsdatei zu löschen und neu zu erstellen:

rm .bash_history
touch .bash_history

Es hat bei mir funktioniert, ohne dass es zu unangenehmen Nebenwirkungen kam, die mir bewusst waren.


3

Art: history -c; rm ~/.bash_history

history -clöscht den Verlauf Ihrer aktuellen Sitzung, rm ~/.bash_historylöscht Ihren Langzeitverlauf und history -c; rm ~/.bash_historylöscht somit beide.


Erklärung kann helfen, das OP besser zu verstehen.
Mischling
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.