Wie bearbeite ich den Verlauf des Bash-Shell-Terminals?

Ich habe versehentlich ein Passwort in einem Command Line Pro oder in einem Terminalfenster eingegeben und möchte nicht meinen gesamten Verlauf entfernen. Meine Shell ist bash.

Wie bearbeite ich meinen Bash-Verlauf in Mac OS X?

Antworten (5)

Das Bearbeiten der .bash_historyist nur eine Frage des Öffnens der Datei mit einem Editor. Es gibt ein paar Möglichkeiten, wie Sie dies erreichen können.

  1. Geben Sie im Terminal einfach ein vi ~/.bash_history, bearbeiten Sie die Datei nach Belieben und speichern Sie sie. Diese Option könnte schwierig sein, wenn Sie natürlich nicht an vi gewöhnt sind.
  2. Machen Sie die Datei sichtbar , indem Sie diese Anweisungen befolgen, öffnen Sie sie beispielsweise wie jede andere Datei, ändern Sie sie und speichern Sie sie.
  3. Geben Sie im Terminal einfach open -e ~/.bash_history. Dieser Befehl öffnet die Datei mit TextEdit , Sie können natürlich jeden anderen Texteditor wählen. Ändern Sie die Datei und speichern Sie sie.

Damit die Änderungen sichtbar werden, starten Sie einfach die Bash neu.

Ich glaube, ich habe meine Antwort gefunden. echo $HISTFILEzeigt den zu bearbeitenden.

Geben Sie im Terminal historydie Zeilennummer ein und notieren Sie sie. Nächster Anruf history -d noted-line-number. Mit erneut können Sie überprüfen, ob die Zeile gelöscht historywurde.

Dies funktioniert nicht auf Yosemite mit ZSH.
Die Frage bezog sich auf bash, nicht auf zsh. Lies gründlich!
@DmitryDupelov du hast recht, tut mir leid für die störung. Wie auch immer, es ist eine Erinnerung an zukünftige Leser (die dieses Detail vielleicht auch vermissen). Vielen Dank für die Korrektur meines Kommentars.
nano ~/.bash_history

Wenn du fertig bist, ctrl+xund komm zurück, um eine richtige Antwort zu akzeptieren, Alter

Ich denke, dass die Antwort von Dmitry ideal ist, wenn sie vor dem Speichern des Verlaufs erfolgt - standardmäßig erfolgt das Speichern beim Beenden der Shell/des Terminals.

Wenn Sie den Verlauf möglicherweise bereits in ~/.bash_history gespeichert haben, bevorzuge ich die Antwort von Thecafremo, aber ich würde vorschlagen, einen Schritt zum Beenden von Terminal hinzuzufügen, um sicherzustellen, dass keine der Bash-Instanzen den Verlauf geladen hat und ihn erneut speichert. Dies ist besonders schwierig, wenn Sie mehrere Terminals haben und jede Art von Befehl-für-Befehl-Verlaufsaktualisierung aktiviert haben.

Hintergrund:

  • bash speichert den Verlauf in einer Instanz der Shell
  • bash kann diesen Verlauf in eine Datei schreiben, was normalerweise passiert, wenn Sie die Shell/das Terminal verlassen
  • bash kann aus einer Datei in den Verlauf einlesen, was normalerweise passiert, wenn Sie eine Shell/ein Terminal öffnen
  • Es ist möglich, das Standardverhalten so zu ändern, dass der Verlauf früher verbreitet wird, wodurch Ihr BAD_TEXT in die Datei und in andere Fenster migriert werden kann

Unabhängig davon, welche Methode Sie verwenden, würde ich einen Schritt hinzufügen: Erfolg überprüfen!

  1. Beenden Sie Terminal.app
  2. Terminal.app erneut öffnen
  3. Bestätigen Sie, dass sich der anstößige Text nicht im Verlauf befindet – vorzugsweise auf eine Weise, die keinen zusätzlichen Verlauf erstellt. Das heißt, nicht grep BAD_TEXT .bash_history! Dieser neue Befehl würde in die Geschichte eingehen. Ich würde einfach .bash_history in Ihrem bevorzugten Editor öffnen und darin nach BAD_TEXT suchen.

Dies sollte Ihnen die Gewissheit geben, dass Sie BAD_TEXT eliminiert haben, egal auf welche Art von verrücktem Bash-Setup Sie stoßen.

Es gibt mehrere Historien, zum Beispiel bash und zsh. Das kannst du mit nano machen. Öffnen Sie dazu einfach das Terminal

Damit bearbeiten Sie den Bash-Verlauf

nano $HOME/.bash_history 

Damit bearbeiten Sie den Standard-zsh-Verlauf

nano $HOME/.zsh_history 

Wenn Sie möchten, können Sie das Ganze mit TextEdit erledigen.

Bash:open -t $HOME/.bash_history

Zsch:open -t $HOME/.zsh_history

Lassen Sie uns dies in einer Frage nach dem zsh-Verlauf fragen, um den besten Effekt zu erzielen.