Ich habe gerade festgestellt, dass ein Workflow, den ich seit Jahren verwende, nicht das tut, was er tun soll. Da mir das so lange nicht aufgefallen ist, könnte man denken, dass es sich nicht lohnt, viel Mühe darauf zu verwenden, aber es stellt sich heraus, dass es gerade etwas wichtig geworden ist.
Wovon rede ich? Okay, ich habe tmux
läuft mit mehreren Sitzungen und jede Sitzung hat unterschiedliche Fenster und so weiter. So zu arbeiten ist wunderbar. Es gibt jedoch einen Nachteil. Wenn der Server neu gestartet wird, schließt er aus irgendeinem Grund alle meine Sitzungen. Fair genug, lässt sich nicht vermeiden und kommt nicht oft vor. Das Ärgerliche daran ist jedoch, dass alle meine zsh
oder bash
history
ist auch weg. Das ist ein Problem. Ich verlasse mich auf meine Geschichte, vielleicht viel zu sehr.
Ich habe dieses Problem umgangen, indem ich fc -W
gedrückt habe (in zsh
) hin und wieder. Ich dachte, dies würde den Verlauf anhängen, der sich im Speicher befindet, und ich würde dann nur den Teil zwischen meinem letzten Aufruf von fc -W
verlieren und den Neustart des Servers. Aber das tut es nicht. Wenn ich fc -W
verwende in einem Fenster, dann fc -W
in einem anderen würde die Historie aus dem ersten Fenster durch die Historie aus dem zweiten Fenster überschrieben werden. Ich müsste fc -R
verwenden zuerst, aber das würde den gesamten Verlauf duplizieren… im Grunde habe ich den fc
missbraucht Befehl die ganze Zeit.
Hier ist die Frage:Wie kann ich sicherstellen, dass nichts von meinem Verlauf verloren geht, wenn ich in tmux
bin und es gibt einen plötzlichen Stromausfall? Hinweis:
- Ich benutze unendliche Geschichte, falls das wichtig ist.
- Ein Teil des Verlaufs zu verlieren ist in Ordnung, d. h. wenn ich einen Befehl von Hand (oder in einem Cronjob) aufrufen muss und ich den Teil des Verlaufs verliere, seit der Befehl zuletzt ausgeführt wurde, ist das in Ordnung.
- Das Terminal verlassen und ein neues öffnen ist nicht die Lösung.
- Ich möchte meine Befehle nicht direkt in der Historie speichern, da dies verschiedene Historien durcheinander bringt.
- Lösungen für beide
bash
undzsh
sind willkommen.zsh
wird bevorzugt.
Bearbeiten:Heben Sie den Teil hervor, den anscheinend alle missverstehen.
Akzeptierte Antwort:
Verwenden Sie in zsh fc -AI
um Ihren Verlauf zu speichern, nicht fc -W
. Verwenden Sie -A
, nicht -W
, ansonsten wird die Historie von anderen Shell-Instanzen überschrieben. Und -I
speichert nur die neuen Verlaufseinträge seit dem letzten Speichern.
Angesichts Ihres Arbeitsablaufs sollten Sie den Verlauf wahrscheinlich automatisch speichern, anstatt ihn manuell zu speichern. Schalten Sie inc_append_history
ein Option, um jeden Befehl unmittelbar vor seiner Ausführung in der Verlaufsdatei zu speichern.
Während es möglich ist, den gleichen Effekt in Bash zu erzielen, ist es schwieriger, den Verlauf zwischen Bash-Instanzen richtig zu teilen. Siehe Bash-Verlauf in mehreren Terminalfenstern beibehalten