Ich führe routinemäßig mehrere screen
Sitzungen auf meinen Linux-Desktops und -Servern aus.
Ein Problem dabei ist, dass ich grep
im Verlauf meines Befehls feststellen muss, dass ich einen Befehl in einer anderen Sitzung ausgegeben habe und mich trennen und erneut anfügen muss, um dieses Verlaufselement abzurufen.
Ist es möglich, die unterschiedlich aktualisierten Protokolle aus mehreren Sitzungen zu erzwingen, damit alle zu einem zentralen Protokoll wechseln?
Antworten:
Es gibt zwei Dinge, die Sie tun müssen:
shopt -s histappend
in Ihren ein.bashrc
. Dies wird an die Verlaufsdatei angehängt, anstatt sie zu überschreiben..bashrc
, insertPROMPT_COMMAND="$PROMPT_COMMAND;history -a; history -n"
und die Verlaufsdatei jedes Mal neu geschrieben und gelesen, wenn bash die Eingabeaufforderung anzeigt.EDIT: Danke an e-t172 für den
history -n
Trickquelle
PROMPT_COMMAND
definiert, also musste ich verwendenPROMPT_COMMAND="history -a; history -n"
, um Fehler zu vermeiden.Bitte nicht verwenden
history -a; history -n
, es funktioniert nicht wie erwartet und es werden viele doppelte, nicht in der richtigen Reihenfolge befindliche Befehle in Ihrem Verlauf angezeigt. Eine Lösung, die im Allgemeinen wie erwartet funktioniert, ist die folgende:Die Verwendung einer Newline anstelle eines Semikolons ist auch eine kurze Möglichkeit, das Problem mit fehlenden / doppelten Semikolons mit PROMPT_COMMAND zu lösen.
quelle
export
ist nicht nötig. Da interaktive Shell-Optionen festgelegt werden sollen,~/.bashrc
die von jeder Sub-Shell aufgerufen werden, ist keine Vererbung erforderlich.PROMPT_COMMAND="history -a; history -c; history -r; $PROMPT_COMMAND"
stattdessen nicht nur zu verwenden ?PROMPT_COMMAND ist in einigen Distributionen standardmäßig nicht definiert. Zum Beispiel ist es in Arch definiert, aber nicht in Debian.
Ich habe einen bashrc in meiner Dropbox, den ich beim Distributions-Hopping verwende. Er beinhaltet:
quelle
PROMPT_COMMAND="$PROMPT_COMMAND; history -a; history -n"
PROMPT_COMMAND="$PROMPT_COMMAND"$'\n''history -a; history -n'