Wie bearbeite ich den Verlauf des Mac OS X-Terminals?

12

Wie bearbeite ich meinen Bash-Verlauf in Mac OS X? Ich habe versehentlich ein Passwort in dieses Fenster eingegeben und möchte nicht meinen gesamten Verlauf entfernen.

Karthick S.
quelle

Antworten:

14

Das Bearbeiten von .bash_historyist nur eine Frage des Öffnens der Datei mit einem Editor. Es gibt verschiedene Möglichkeiten, dies zu erreichen.

  1. Geben Sie im Terminal einfach ein vi ~/.bash_history, bearbeiten Sie die Datei wie gewünscht und speichern Sie sie. Diese Option kann schwierig sein, wenn Sie 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 ein open ~/.bash_history -a /Applications/TextEdit.app. Dieser Befehl öffnet die Datei mit TextEdit . Sie können natürlich auch einen anderen Texteditor auswählen. Ändern Sie die Datei und speichern Sie sie.

Damit sich die Änderungen bemerkbar machen, starten Sie einfach die Bash neu.

Thecafremo
quelle
Ich bekomme "Erlaubnis verweigert". Wenn ich ein Sudo mache, kann ich nicht alle eingegebenen Befehle sehen.
Karthick S
1
@KarthickS Du machst das genau was?
Thecafremo
Wenn ich mir den Inhalt von .bash_history ansehe, unterscheidet sich der Inhalt von der Ausgabe eines Verlaufsbefehls. Ich erkenne beide, der Inhalt der Datei ist älter. Was passiert, wenn mehrere Befehlsfenster geöffnet sind? Sie scheinen nicht den gleichen Befehlsverlauf zu haben. PS Ich habe überprüft, ob ich Bash verwende.
Victor Engel
1
Ich glaube ich habe meine Antwort gefunden. ECHO $ ​​HISTFILE zeigt die zu bearbeitende an.
Victor Engel
10

Geben Sie im Terminal Typ historydie Zeilennummer ein. Nächster Anruf history -d noted-line-number. Sie können überprüfen, ob die Zeile historyerneut gelöscht wurde.

Unbenannt_1
quelle
2
Dies funktioniert bei Yosemite mit ZSH nicht.
Paulo Oliveira
Die Frage war nach Bash, nicht nach Zsh. Gründlich durchlesen!
Unbenannt_1
1
@DmitryDupelov Sie haben Recht, tut mir leid. Wie auch immer, es ist eine Erinnerung an zukünftige Leser (die möglicherweise auch dieses Detail übersehen). Vielen Dank für die Korrektur meines Kommentars.
Paulo Oliveira
2
nano ~/.bash_history

Wenn Sie fertig sind, ctrl+x kommen Sie zurück, um eine richtige Antwort zu akzeptieren

Matian2040
quelle
0

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 bereits haben können gespeichert , die Geschichte zu ~ / .bash_history, dann ziehe ich es Thecafremo Antwort, aber ich würde vorschlagen , einen Schritt des Verlassens - Terminal fügte hinzu , dass keiner der bash - Instanzen , um sicherzustellen , haben die Geschichte geladen und erneut speichern es. Dies ist besonders schwierig, wenn Sie über mehrere Terminals verfügen und jede Art von Befehl-für-Befehl-Verlaufsaktualisierung aktiviert haben.

Hintergrund:

  • bash speichert den Verlauf innerhalb einer Instanz der Shell
  • bash kann diesen Verlauf in eine Datei schreiben, was normalerweise beim Beenden der Shell / des Terminals geschieht
  • bash kann aus einer Datei in den Verlauf lesen, was normalerweise passiert, wenn Sie eine Shell / ein Terminal öffnen
  • Es ist möglich, das Standardverhalten so zu ändern, dass der Verlauf früher weitergegeben 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. Öffnen Sie Terminal.app erneut
  3. Vergewissern Sie sich, dass der fehlerhafte Text nicht im Verlauf enthalten ist - vorzugsweise so, dass kein zusätzlicher Verlauf erstellt wird. 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 Lieblingseditor ö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.

Salbei
quelle