回答:
リアルタイムでのBash履歴の更新で詳細に説明されているシンプルなソリューション。
これらのコマンドを.bashrc構成に入れるように指示されています。
shopt -s histappend
PROMPT_COMMAND="history -a;$PROMPT_COMMAND"
最初のコマンドは、.history
ファイルモードを追加に変更します。2番目のhistory -a
コマンドは、各シェルプロンプトで実行されるコマンドを構成します。-a
すぐに履歴ファイルに現在の/新しい行を書き込みます。
zshに関連:
これをあなたのに入れてみてください.bashrc
:
shopt -s histappend # append to history, don't overwrite it
export PROMPT_COMMAND="history -a; history -c; history -r; $PROMPT_COMMAND"
ここにクレジット:https : //stackoverflow.com/questions/103944/real-time-history-export-amongst-bash-terminal-windows/3055135
history -c
実行中のセッションの履歴をクリアします。これにより、履歴カウンタがの量だけ減少し$HISTSIZE
ます。history -r
の内容を読み取り、$HISTFILE
現在実行中のセッション履歴に挿入します。これにより、の行数だけ履歴カウンタが増加し$HISTFILE
ます。
私はそれがコマンドがほぼすぐに利用可能であることを意味すると思います(1つの端末、書き込みecho 1
、2番目の端末echo 2
、最初にecho 3
下向き矢印を2回押すと、echo 2
利用可能になるはずです。書かれています。
man history
...
bash
組み込みであるため、で説明されていman bash
ます。を使用することもできますhelp history
。
-r
との-c
対の違いと思います-a
。
history -c; history -r
?私はそれがあなたにとってより良いと思います、それは時々私にとってより良いでしょう、私はしばしば複数のシェルを使用して1つの仕事をするので、できるだけ多くの履歴を持っていることを好みます。私は実際、コマンドが終了した後にのみ履歴に書き込まれることを気にしています。通常、あるホストに対してsshセッションを開始し、最初のホストがまだ実行中に別のホストを開きたい場合は、まだ履歴に書き込まれていないため、再入力する必要があります。
history -a
十分かもしれません
約100000エントリの大きな履歴ファイルがあり、履歴リストをクリアして履歴ファイル全体を読み取る(history -c
およびを使用history -r
)バリアントは、プロンプトが表示される前に顕著な(おそらく0.2秒)遅延を導入します。history -n
履歴ファイルから新しい行のみが読み取られるように使用する方が高速です。
shopt -s histappend
PROMPT_COMMAND='history -a;history -n'
PROMPT_COMMAND
シェル変数であるため、エクスポートする必要はありません。
他のすべての回答に関するメモ(基本的に同じものです):
(または友人)PROMPT_COMMAND="history -a;$PROMPT_COMMAND"
での設定で.bashrc
十分です。
また、history -a
現在のセッションの履歴を「スナップショット」するときはいつでも手動で実行できます。
常にファイルに新しい行を追加し、上書きしshopt -s histappend
ないため、コマンドは必要history -a
ありません。また、少なくともBash 4ではhistappend
、デフォルトの動作です。
shopt -s histappend
です。また、私はそれを自分の~/.bash_profile
histappend
になっている別の設定がある可能性があります。これはデフォルトの動作です。探していますが、Macにアクセスできません。
control-r
、1つのbashのコマンド履歴で逆検索するために使用します。history | grep
正規表現が必要でない場合よりも便利です。