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?


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.


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"
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.