Ich habe versucht, ~/.bash_history
in einer Terminalsitzung nach meinen letzten Befehlen zu suchen, aber sie waren einfach nicht da. Ich denke, das liegt daran, dass ich mehrere Terminalsitzungen geöffnet habe.
Gibt es eine Möglichkeit, den Befehlsverlauf der aktuellen Terminalsitzung in die Datei bash_history zu synchronisieren (dh zu synchronisieren, zu pushen oder zu synchronisieren, zu schreiben) (ohne die Sitzung zu schließen und diese Umgebung zu verlieren)?
(In der Idee wäre es in etwa ähnlich, wie der sync
Befehl die Dateisystemänderungen auf einigen Systemen speichert.)
Ich stelle mir vor, ich könnte Bash einrichten, um den Verlauf mehrerer Sitzungen beizubehalten, aber die Möglichkeit, den aktuellen Verlaufspuffer zu pushen, wäre in Szenarien nützlich, in denen Sie an einem neuen Computer arbeiten und versehentlich vergessen haben, Bash so einzurichten, wie Sie es sich gewünscht hätten .
quelle
history -a
Shell-eingebautes Kommando zu verwenden, aber irgendwie bekomme ich danach 'Erlaubnis verweigert' für die.bash_history
Datei.Antworten:
Diese Zeile hinzufügen zu
.bashrc
:Neues Terminal öffnen und prüfen.
Erläuterung
history -a
Hängt neue Verlaufslinien an die Verlaufsdatei an.history -n
Weistbash
an, Zeilen zu lesen, die nicht aus der Verlaufsdatei in die aktuelle Verlaufsliste der Sitzung gelesen wurden.PROMPT_COMMAND
: Der Inhalt dieser Variablen wird als regulärer Befehl vor derbash
Eingabeaufforderung show ausgeführt. Jedes Mal, wenn Sie einen Befehl ausführen,history -a; history -n
wird dieser ausgeführt und Ihrbash
Verlauf wird synchronisiert.quelle
history -a
in einem Terminal mit unverändertem bashrc arbeiten können.export PROMPT_COMMAND="${PROMPT_COMMAND};history -a; history -n"
${PROMPT_COMMAND}
leer ist, gibt dies einen Fehler wegen der Führung;
export PROMPT_COMMAND="${PROMPT_COMMAND}${PROMPT_COMMAND:+;}history -a; history -n"