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.