GNU/Linux >> Linux の 問題 >  >> Linux

シェルを終了せずに履歴をアーカイブしますか?

何年も使用しているワークフローが、本来の機能を果たさないことに気づきました。そんなに長い間気づかなかったので、あまり努力する価値はないと思われるかもしれませんが、今はやや重要になっていることがわかりました。

私は何について話しているのですか?はい、tmuxがあります 複数のセッションで実行され、各セッションには異なるウィンドウなどがあります。そのように働くことは素晴らしいです。ただし、欠点が1つあります。サーバーが再起動されると、理由が何であれ、すべてのセッションが閉じられます。十分に公平で、避けられず、頻繁に発生することはありません。ただし、厄介なのは、すべてのzsh またはbash history 同様になくなっています。これは問題だ。私は自分の歴史に頼っていますが、多分多すぎます。

fc -Wを押すことで、この問題を回避していました。 (zsh内 ) ときどき。これにより、メモリ内の履歴が追加され、最後にfc -Wを呼び出した間の部分のみが失われると思いました。 サーバーの再起動。しかし、それはそれがすることではありません。 fc -Wを使用する場合 1つのウィンドウで、fc -W 別のウィンドウでは、最初のウィンドウの履歴が2番目のウィンドウの履歴で上書きされます。 fc -Rを使用する必要があります 最初ですが、これは履歴全体を複製します…基本的に私はfcを誤用していました ずっと命令します。

質問は次のとおりです。tmuxにいるときに、履歴が失われないようにするにはどうすればよいですか。 突然の停電がありますか?注:

  • 重要な場合に備えて、無限の履歴を使用します。
  • 履歴の一部を失っても問題ありません。つまり、手動で(またはcronジョブで)コマンドを呼び出す必要があり、コマンドが最後に実行されてから履歴の一部が失われた場合、それは問題ありません。
  • ターミナルを終了して新しいターミナルを開くことは解決策ではありません。
  • 異なる履歴が混同されるため、コマンドを履歴に直接保存したくありません。
  • 両方のbashのソリューション およびzsh 大歓迎です。 zsh 優先されます。

編集:誰もが誤解していると思われる部分を強調表示します。

承認された回答:

zshでは、fc -AIを使用します fc -Wではなく、履歴を保存します 。 -Aを使用する 、-Wではありません そうしないと、他のシェルインスタンスからの履歴が上書きされます。そして-I 最後の保存以降の新しい履歴エントリのみを保存します。

関連:BASHスクリプト:コマンド出力の各行を配列の値に割り当てる方法は?

ワークフローを考えると、手動で保存するのではなく、おそらく履歴を自動的に保存する必要があります。 inc_append_historyをオンにします 各コマンドが実行される直前に履歴ファイルに保存するオプション。

bashでも同じ効果を得ることができますが、bashインスタンス間で履歴を適切に共有することは困難です。複数のターミナルウィンドウでbash履歴を保持する

を参照してください。
Linux
  1. Linuxでhistoryコマンドを使用する方法

  2. 人々へのPower(Shell)

  3. サーバーのログイン履歴を確認してください

  1. Bashシェルのカスタマイズ

  2. 解凍せずに zip アーカイブ内のファイルを一覧表示するにはどうすればよいですか?

  3. シェルで前のディレクトリに戻る

  1. 履歴に保存せずにシェルでコマンドを実行するにはどうすればよいですか? [Linuxのヒント]

  2. `cd`外部コマンドのポイント?

  3. シェル論理演算子の優先順位&&、||?