Wie funktioniert der Befehl history?


8

Wenn ich einen Befehl in das Terminal eingebe, wird er erst in meiner ~/.bash_historyDatei angezeigt, wenn ich meine Sitzung beende.

Wenn ich meine ~/.bash_historyDatei manuell bearbeite (zum Beispiel entferne ich die letzten drei Befehle), werden beim Eingeben historyweiterhin die Befehle angezeigt, die ich aus der ~/.bash_historyDatei entfernt habe. Erst wenn ich meine Sitzung beende und mich erneut anmelde, verschwinden sie.

Wie werden meine ~/.bash_historyDatei und der historyBefehl synchronisiert?



"Wenn ich einen Befehl in das Terminal eingebe" Nicht wirklich wahr. Wenn Sie standardmäßig ein Leerzeichen vor den Befehl setzen, wird dieser Befehl nicht gespeichert.
— Rinzwind

@Rinzwind Das Verhalten beim Speichern des Befehls, auch wenn vor ihm ein Leerzeichen steht, kann durch Bearbeiten des Werts Ihrer Umgebungsvariablen HISTCONTROL geändert werden.
— sys0dm1n

@ sys0dm1n "standardmäßig"
— Rinzwind

Antworten:


10

Wenn Sie ein Bash-Terminal öffnen, wird der Inhalt ~/.bash_historyder aktiven Shell geladen und der Verlauf der aktiven Shell (im RAM) erstellt. Dabei wird jeder in dieser Shell ausgeführte Befehl hinzugefügt - und nur dazu, nicht zur Datei.

Nur wenn Sie ein Bash-Terminal schließen, wird sein Verlauf an Ihre ~/.bash_historyDatei angehängt .


Optionen von history:

history -a # save the active shell's history to ~/.bash_history (appending)
history -c # clear the active shell's history
history -d NNN # delete row NNN of the active shell's history
history -r # reload the active shell's history from ~/.bash_history (appending)
history -w # save the active shell's history to ~/.bash_history (overwriting)

Optionen für die ~/.bashrcDatei

Wenn Sie dieses Verhalten so ändern möchten, dass der temporäre Verlauf ~/.bash_historydirekt nach der Ausführung eines Befehls gespeichert wird , fügen Sie die folgende Zeile hinzu:

PROMPT_COMMAND="history -a"

Wenn Sie außerdem möchten, dass jedes Terminal die ~/.bash_historyDatei nach jeder Befehlsausführung automatisch lädt , fügen Sie stattdessen diese Zeile hinzu:

PROMPT_COMMAND="history -a; history -c; history -r"

Wenn Sie bestimmte Befehle (z. B. alles, was mit sudound beginnt cat) vom Speichern ausschließen möchten , fügen Sie diese Zeile hinzu:

HISTIGNORE="sudo*:cat*"
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.