
私が何年も使ってきたワークフローが期待どおりに機能しないことに気づきました。長い間気付かなかったので、努力する価値がないと思ったかもしれませんが、今はある程度重要になりました。
何を言ってるの?いいですね。tmux
複数のセッションが実行されており、それぞれ別のウィンドウがあります。このように働くことをお勧めします。しかし、欠点があります。何らかの理由でサーバーが再起動すると、すべてのセッションが閉じます。公平に言えば、これは避けられないものであり、頻繁には発生しません。ところで迷惑にも私のzsh
orが全てbash
history
消えました。これは問題です。私は私の歴史に非常に依存しているようです。
私はfc -W
この問題を避けるために時々(in)をクリックします。zsh
私はこれがメモリ内の履歴を追加すると思いましたが、fc -W
最後の呼び出しとサーバーの再起動の間の部分を失います。しかし、それはそうすることではありません。fc -W
あるウィンドウで使用し、別のウィンドウで使用すると、最初のfc -W
ウィンドウの履歴が2番目のウィンドウの履歴で上書きされます。最初に使用する必要があります。fc -R
これにより、履歴全体がコピーされます。基本的に私はそのfc
コマンドを乱用してきました。
tmux
質問は:私が中にいる間に突然電源が切れたときに私の記録を失わないようにするにはどうすればよいですか?メモ:
- 万が一に備えて無限の履歴を使います。
- いくつかの記録を失っても大丈夫です。つまり、手動で(またはcronjobで)コマンドを呼び出す必要があり、コマンドが最後に実行された後に履歴の一部を失ってもかまいません。
- 端末を終了して新しい端末を開くことは解決策ではありません。
- 他のレコードが混在しているので、私のコマンドをレコードに直接保存したくありません。
bash
両方のソリューションを歓迎します。優先されます。zsh
zsh
編集:誰もが誤解する部分を強調しました。
答え1
zshでは、fc -AI
代わりにを使用して履歴を保存してくださいfc -W
。-A
それ-W
以外の場合は、他のシェルインスタンスの履歴が上書きされます。-I
最後の保存以降、新しい履歴エントリのみが保存されます。
ワークフローを考慮すると、手動ではなく自動的に履歴を保存する必要があります。inc_append_history
各コマンドを実行する直前に履歴ファイルに保存するには、このオプションをオンにします。
Bashでも同じ効果が得られますが、Bashインスタンス間で履歴を正しく共有することはより困難です。バラより複数の端末ウィンドウでbash履歴を保持する
答え2
次のコマンドを使用して履歴を保存できます。bash
(私は慣れていませんzsh
。)
history -a
これは次のような場合に機能するようですzsh
。
fc -ln 1 -1 > ~/.zsh_history