回答:
history -a; history -c
すべてのウィンドウで実行して履歴を保存できます。そして、それhistory -r
を更新します。
それをより永続的に解決するには、これをあなたに追加してください.bashrc
:
export PROMPT_COMMAND="history -a; history -c; history -r; $PROMPT_COMMAND"
難しいですね。ここにあなたのために働くかもしれないいくつかの方法があります。
プロセスアカウンティングツールがインストールされていて(Linuxの場合はと呼ばれるパッケージを探しますacct
)、それらを使用する権限がある場合、いつどの端末で実行したかを確認できますconvert
。
lastcomm convert
これが利用できない、または決定的でないhistory
場合は、bashの各インスタンスでコマンドを実行してコマンドを探すことができconvert
ます。これにより、bashの起動時に履歴ファイルにあったコマンドも検索されます。
: >/tmp/convert.history
for w in $(seq 0 11); do
screen -p $w -X stuff \
'history | sed 's/^.*convert/'$w'&/" >>/tmp/convert.history
'; done
$(seq 0 11)
画面ウィンドウの数を反復します。現在bashを実行していないウィンドウをスキップしてください。ただし、入力の解釈が異なるその他のプロセスはスキップしてください。screen -p $w stuff …
次の文字列を入力として指定されたウィンドウに送信します。文字列の最後に改行が必要です。/tmp/convert.history
、ファイルにはのような行のリストが含まれます。3 convert foo.jpg
convert foo.jpg
history | grep convert
すべてのウィンドウで実行されてしまいました。失望
tcshでは、定期的なエイリアスを使用して、セッション間で履歴を共有できます。
.cshrc(または.tcshrc)ファイルで:
set tperiod = 60 #(or any other number. Time in minutes between refreshing)
alias periodic 'history -S; echo "Syncing history"'
これにより、履歴コマンドが60分ごとに自動的に実行されます。これにより、履歴がホームディレクトリの共通の履歴ファイルに保存されます。履歴をより頻繁に更新するには、期間数を減らすか、単に「定期的」コマンドを実行して手動で更新します
setopt share_history
中で/etc/zsh/zshrc
、この問題は私に起こることはありませんので:P