Wie lösche ich den Bash-Verlauf vollständig?


254

Ich möchte alle vorherigen Befehle aus dem Verlauf meines Servers löschen. Ich habe verwendet history -cund es scheint, dass alle Dinge geklärt sind, aber wenn ich auf den Server ssh, sind alle Befehle noch da.

Wie kann ich sie dauerhaft löschen?

Antworten:


332

Die Datei ~/.bash_historyenthält den Verlauf.

Um den Bash-Verlauf vollständig auf dem Server zu löschen, öffnen Sie das Terminal und geben Sie Folgendes ein

cat /dev/null > ~/.bash_history

Eine andere alternative Möglichkeit besteht darin, eine Verknüpfung ~/.bash_historyzu erstellen/dev/null

Jedoch,

Ein ärgerlicher Nebeneffekt ist, dass die Verlaufseinträge eine Kopie im Speicher haben und beim Abmelden in die Datei zurückgespült werden .

Um dies zu umgehen, verwenden Sie den folgenden Befehl (funktioniert für mich):

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

17
Sie können den obigen Befehl auch in .bashrc & .bash_logout einfügen. Was bedeutet es, wenn Sie sich anmelden und einen klaren Verlauf haben? Wenn Sie sich abmelden, wird der Verlauf gelöscht
Qasim

26
Warum brauchst du dort / dev / null? Wäre das nicht > ~/.bash_hstorygenug?
Konfigurator

4
ja es würde reichen!
fromnaboo

3
Ich habe versucht, es auf einer Himbeer-Box zu machen, während ich über SSH verbunden war. Ich habe den obigen Befehl (cat / dev / null> ~ / .bash_history && history -c && exit) zu .bashrc & .bash_logout hinzugefügt, wie von @Qasim vorgeschlagen. Sobald ich mich über SSH verbinde, beendet der Remote-Host die Verbindung (nach dem Drucken der motd). Hilfe: /
Advanced

14
Zeigt, was passiert, wenn Sie blind Dinge tun, ohne richtig zu lesen und ohne die Verarbeitung und den Datenfluss zu verstehen. Es zeigt auch die Gefahren einer schlechten Kommunikation. Was devav2 getan hat, war, es einmal auszuführen, und was Qasim hätte schreiben sollen, ist, den Befehl exit zu entfernen, bevor er in das Anmeldeskript eingefügt wird.
Sri

142

Was ist zu tun:

In jeder offenen Bash-Shell (möglicherweise sind mehrere Terminals geöffnet):

history -c
history -w

Warum: Wie oben erwähnt, wird history -cdie Datei geleert ~/.bash_history. Es ist wichtig zu beachten, dass die bash-Shell den Verlauf nicht sofort in die Datei bash_history schreibt. Daher ist es wichtig, (1) den Verlauf in die Datei zu schreiben und (2) den Verlauf in allen Terminals zu löschen . Das ist, was die obigen Befehle tun.

Referenz: http://www.giannistsakiris.com/index.php/2007/09/13/how-to-clear-bash-history-and-what-to-watch-out-for/


3
Eigentlich hat es bei mir umgekehrt geklappt.
Kristianp

24
In vielen Fällen können Sie diese beiden Befehle miteinander kombinieren:history -cw
Elliot,

2
Aus irgendeinem Grund funktioniert dies unter Ubuntu 14.04 nicht, wahrscheinlich bei anderen. Das sollte es aber nicht. Wenn Sie den Befehl "history -cw" eingeben, können Sie mit dem Aufwärtspfeil bestätigen, dass der Verlauf nicht mehr vorhanden ist. Wenn Sie jedoch ein anderes Terminalfenster (in Unity Desktop) mit Umschalt + Klick auf das Terminalsymbol starten (ich habe es) (im Launcher angeheftet) Der Befehlsverlauf ist wieder da, egal wie oft Sie "history -cw" ausführen. "cat / dev / null> ~ / .bash_history" ist der einzige Weg, der für mich funktioniert hat.
Hatoru Hansou

Ich bin zwar kein Ubantu, funktioniert aber gut für meine Bash-Shell in OSX.
Scott Biggs

3
Es ist Geschichte -c und dann Geschichte -w. Sie löschen zuerst die Geschichte und schreiben dann die Änderungen. Dies kann leicht bestätigt werden, indem das Terminal geschlossen und wieder geöffnet wird. Mit -w sind zuerst die Befehle wieder da, mit -w wird der letzte Verlauf effektiv gelöscht.
Hatoru Hansou

56

Führen Sie die folgenden Befehle aus, um den Verlauf für immer zu löschen

history -c && history -w

Viel Glück!


3
Viel besser als die akzeptierte Antwort. ;)
Chiramisu

Diese Antwort wäre noch hilfreicher, wenn erklärt würde, was diese Flags bewirken (und warum / wann sie die richtigen Befehle sind).
LarsH

20

Es gibt noch eine andere, viel einfachere Möglichkeit: history -cAuf der Terminal-Eingabeaufforderung werden alle Einträge in der bash_historyDatei ausgeführt und sind verschwunden .


Nein ist es nicht. Abmelden, einloggen, Pfeil nach oben gibt mir alles. Du brauchst auch das "history -w".
Stolsvik

1
Wenn Sie die Frage des OP lesen, wissen Sie, dass die Verwendung history -cgenau die Methode ist, die zu dieser Frage geführt hat.
J. Money

10

Eine andere Möglichkeit besteht darin, die ~/.bash_historyDatei mit dem rm ~/.bash_historyBefehl zu löschen . Wenn Sie sich ein weiteres Mal anmelden, wird die .bash_historyDatei automatisch erstellt.


4
Zumindest unter einigen Betriebssystemen wird ~ / .bash_history beim Abmelden auf die Festplatte geschrieben. * Buntus ist nicht sicher.
d -_- b

7

Löschen Sie den Verlauf der aktuellen Shell:

history -c

Wenn Sie sich abmelden, wird der Verlauf Ihrer aktuellen Shell bis zu einer maximalen Anzahl an ~ / .bash_history angehängt (siehe HISTFILESIZE in "man bash").

Wenn Sie den Verlauf vollständig entfernen möchten, müssen Sie im Wesentlichen ~ / .bash_history leeren, was viele der oben genannten Einträge vorgeschlagen haben. Sowie:

history -c && history -w

Dies löscht den Verlauf der aktuellen Shell und erzwingt dann, dass der Verlauf der aktuellen Shell (leer) ~ / .bash_history überschreibt. Genauer gesagt, erzwingt dies das Überschreiben von HISTFILE (standardmäßig ~ / .bash_history).

Hoffe das hilft.


4
Ihre Antwort ist richtig, aber die Frage war zwei Jahre alt, hatte die Antworten akzeptiert und enthielt die gleiche Antwort, die Sie gegeben haben.
Charles Green

6
rm ~/.bash_history; history -c; logout

Melden Sie sich jetzt wieder an und sehen Sie, dass Ihre Pfeilspitze Ihnen nichts gibt.


1
@KasiyA Es geht um einen Server und eine SSH-Sitzung, also keine Notwendigkeit zu bearbeiten ...
Radu Rădeanu

0

Probier diese

Bearbeiten Sie Ihre .profileund fügen Sie die Zeile unten am Ende der Datei hinzu

rm -f .bash_history

Auf diese Weise wird Ihre .bash_history-Datei bei jeder Anmeldung automatisch für Sie gelöscht. Das Hinzufügen der Option -r zum rekursiven Entfernen ist gefährlich und wird nicht benötigt.

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.