Wie teilt man die Geschichte zwischen Terminals in zsh?

29

Wie kann erreicht werden, dass jeder eingegebene Befehl in der Historie jedes offenen Terminals sichtbar ist?

Wenn mehrere Terminals geöffnet sind, wird der Verlauf nicht geteilt, dh was Sie in den Verlauf eines Terminals eingegeben haben, wird in einem anderen nicht angezeigt. PROMPT_COMMAND="history -a"Stellen Sie sich eine Alternative zu Bashs vor (die den Verlauf speichert, bevor die Eingabeaufforderung angezeigt wird).

MJB
quelle
Siehe auch im Zusammenhang und erweitern Q & A: superuser.com/questions/446594/...
lumbric

Antworten:

36

Die folgenden Optionen wären anwendbar:

  • So speichern Sie jeden Befehl, bevor er ausgeführt wird (dies unterscheidet sich vom Bash-Verlauf - eine Lösung):

    setopt inc_append_history
    
  • Das Lesen der Verlaufsdatei bei jedem Aufruf des Verlaufs sowie die Funktionen von inc_append_history:

    setopt share_history
    

Diese können in Ihrer .zshrcDatei eingestellt werden.

Verwandte für Bash:

MJB
quelle
4
"SHARE_HISTORY: Mit dieser Option werden sowohl neue Befehle aus der Verlaufsdatei importiert als auch Ihre eingegebenen Befehle an die Verlaufsdatei angehängt (letztere entspricht der Angabe von INC_APPEND_HISTORY, die deaktiviert werden sollte, wenn diese Option aktiviert ist )." (Aus manueller Hervorhebung hinzugefügt) Das heißt, nur die Option INC_APPEND_HISTORY macht das, was Sie wollen.
Artfulrobot
3
Tatsächlich macht nur die Option SHARE_HISTORY, was Sie wollen. Der Ausdruck "der deaktiviert werden sollte, wenn diese Option aktiviert ist" wird in "[INC_APPEND_HISTORY] sollte deaktiviert werden, wenn die Option [SHARE_HISTORY] aktiviert ist" übersetzt. Ich habe dies auf zsh 5.1.1 unter Ubuntu Xenial getestet.
Linus Arver
1
@opert ist richtig: setopt share_historyist das, was das gewünschte Ergebnis erzielen wird . @MJB Wären Sie bereit, Ihre Antwort zu bearbeiten, um die Erwähnung von zu entfernen setopt inc_append_history? Es verdeckt die eigentliche Antwort.
Bonh
Die Namen sind Groß- und Kleinschreibung und Unterstreichungs ignoriert werden alsowenn Siesetopt | grep histerhaltenincappendhistoryundsharehistory.
Pablo A
4

Wenn Sie Robby Russells fantastisches OhMyZSH verwenden, wird dies und mehr erledigt.

Siehe https://github.com/robbyrussell/oh-my-zsh/blob/master/lib/history.zsh

Das schließt ein setopt inc_append_history.

james_womack
quelle
Es ist sein / ihr / es. Wichtig für die Schalenarbeit.
Cees Timmerman
@ CeesTimmerman behoben, danke. Es ist wichtig für die Kommunikation im Allgemeinen, glaube ich. Was meinten Sie mit "Wichtig für die Rohbauarbeit"?
james_womack
1
Ein Tippfehler in der Shell kann Ihr gesamtes System beschädigen.
Cees Timmerman