Bewahren Sie den tcsh-Verlauf in mehreren Terminalfenstern auf

8

Wie können wir dieselbe Historie über mehrere Terminals hinweg beibehalten oder beibehalten?

Dieselbe Frage, jedoch für die Bash-Shell, wurde im folgenden Link erörtert

Bewahren Sie den Bash-Verlauf in mehreren Terminalfenstern auf

Lass mich die entsprechenden Einstellungen für die tcsh Shell wissen?

user1228191
quelle
Weitere Informationen zu tcsh historyfinden Sie unter man tcsh. Wenn history -SSie nach suchen, sollten Sie zum relevantesten Teil springen.
Randall

Antworten:

7

Diese Variablen legen den Verlauf so fest, dass er sich selbst zusammenführt, anstatt ihn zu überschreiben, und keine Duplikate speichert:

set history=1000
set histdup=erase
set savehist=(1000 merge)

Die geheime Sauce ist diese Zeile:

alias precmd 'history -S; history -M'

Dadurch wird Ihr Verlauf vor dem Drucken der Eingabeaufforderung gespeichert und zusammengeführt, dh nach jedem von Ihnen eingegebenen Befehl.

Alle oben genannten Elemente sollten zu Ihrer .tcshrc- Datei hinzugefügt werden.

Idan
quelle
Als ich dies hinzufügte, passierte alias precmd 'history -S; history -M'nichts, als ich einen Befehl schrieb. Gibt es noch etwas, das getan werden sollte?
Ayman Salah
@AymanSalah, was passiert, ist nicht offensichtlich - es ist die .historyDatei (oder der histfileShell-Variablenwert, falls festgelegt), die auf die Festplatte geschrieben wird. Ohne den festgelegten precmdAlias ls -l .historywird die .historyDatei als unberührt angezeigt. Mit precmd Set wie oben, ls -l .historyzeigt die aktualisierte Zeitstempel und Größe, wie es mit jedem Befehl geschrieben wird.
Randall
@ Randall Vielen Dank für den Hinweis. Ich hatte damals Probleme mit der Shell-Sitzung. Was Sie sagen, ist 100% richtig.
Ayman Salah
1

Zusätzlich zur Antwort von Idan möchte ich hinzufügen, dass alias precmd 'history -S; history -M'die Verlaufsdatei möglicherweise durcheinander gebracht werden kann, da sie auch das SIGINT- und EOF-Signal (Strg + C und Strg + D) aufzeichnet.

Geben Sie hier die Bildbeschreibung ein

Ein besserer Weg wäre das Speichern und Zusammenführen des aktuellen Shell-Verlaufs nach dem Ausführen eines Befehls.

Sie können dies stattdessen mit diesem Setup erreichen, da der tcsh SIGINT oder EOF nicht als gültigen Befehl erkennt.

alias postcmd       "history -S; history -M"
berong91
quelle