私は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回記録されます。私は定期的にw / cronを実行することを考えました:
cat .bash_history | sort | uniq > temp.txt
mv temp.txt .bash_history
これにより重複を削除できますが、残念ながら順序は保持されません。私がいない場合はsort、ファイルを最初に、私は信じていませんuniq正常に動作することができます。
.bash_historyの重複を削除するにはどうすればよいですか?
追加クレジット:
.bash_historyスクリプトを使用してファイルを上書きする際に問題はありますか?たとえば、Apacheログファイルを削除する場合はkill、ファイルへの接続をフラッシュするためにnohup / reset信号を送信する必要があると思います。.bash_historyファイルの場合は、psフィルタリングスクリプトを実行する前に、何らかの方法で接続されたセッションがないことを確認して確認できますか?
historyコマンドのすべてのオプションのmanページを見つけることができません。どこを見ればいいの?
ignoredupsの代わりに、erasedupsしばらくの間、それがあなたのためにどのように動作するかを参照してください。