control+r
私はコマンド履歴を検索するために再帰を使用するのが大好きです。私が使用したいいくつかの良いオプションを見つけました。
# ignore duplicate commands, ignore commands starting with a space
export HISTCONTROL=erasedups:ignorespace
# keep the last 5000 entries
export HISTSIZE=5000
# append to the history instead of overwriting (good for multiple connections)
shopt -s histappend
私にとって唯一の問題は、連続erasedups
した重複エントリのみを削除することでした。したがって、次のコマンド文字列を使用してください。
ls
cd ~
ls
コマンドはls
実際には2回記録されます。定期的にcronを実行することを検討しました。
cat .bash_history | sort | uniq > temp.txt
mv temp.txt .bash_history
これにより重複項目が削除されますが、残念ながら順序は維持されません。そのファイルを最初に使用しないと機能sort
しないと思いますuniq
。
.bash_historyから重複を削除して順序を維持する方法は?
追加クレジット:
.bash_history
スクリプトを介してファイルを上書きするのに問題がありますか?たとえば、Apacheログファイルを削除する場合は、nohup / Resetシグナルを送信してkill
ファイルへの接続をフラッシュする必要があると思います。ファイルの場合の場合、フィルタスクリプトを実行する前に接続されたセッションがないことを確認して確認する.bash_history
ために使用できる方法はありますか?ps
ベストアンサー1
だから、重複した項目に迷惑をかけた後、私は同じことを探してい~/.bash_profile
ました~/.bashrc
。
export HISTCONTROL=ignoreboth:erasedups
これはユーザーが望むことをほぼ正確に行い、1つのシェルインスタンスにある最新のコマンドのみを保持します。ignoreboth
実際に仕事をしてignorespace:ignoredups
仕事erasedups
を終わらせてください。
少なくとも私のMac端末では、bashは完璧に動作します。それを発見askubuntu.comにアクセスしてください。。
これはignoredups
従来では役に立ちません.bash_history
。重複したエントリは、使用中にファイルに表示され続けますshopt -s histappend
。