同一コマンド続けて実行した時にhistoryの履歴が1つだけになる方法 †
端末から同一のコマンドを何度も実行することがありますよね。
この場合、実行した回数分historyの履歴に保存されています。
これを同一のコマンドを続けた場合(重複した場合)は1つだけ履歴に残す設定方法があります。
その設定方法を以下に記します。
本資料は、bashを使用して動作確認を行いました。
sakura@ubuntu:~$ LANG=C bash --version
GNU bash, version 4.2.25(1)-release (i686-pc-linux-gnu)
<snip>
関連記事 †
HISTCONTROL=ignoredups について †
環境変数 HISTCONTROL に ignoredups を指定することにより、端末から同一コマンドを連続して実行するとき、
重複するコマンドは履歴対象外となります。
export HISTCONTROL=ignoredups
HISTCONTROL=ignoredups 試してみる †
以下に HISTCONTROL=ignoredups を設定し試してみます。
- history -c により履歴を削除します。
その後、ls -lコマンドを発行しています。
sakura@ubuntu:~$ history -c
sakura@ubuntu:~$ ls -l
合計 0
- historyコマンドを実行すると、ls -lとhistoryコマンドの履歴が確認できます。
sakura@ubuntu:~$ history
1 ls -l
2 history
- 環境変数 HISTCONTROL=ignoredups を設定し、再度historyを実行した結果です。
sakura@ubuntu:~$ export HISTCONTROL=ignoredups
sakura@ubuntu:~$ history
1 ls -l
2 history
3 export HISTCONTROL=ignoredups
4 history
- 直前に実行したコマンドhistoryを再度実行します。
直前と同じコマンドなので、今回(2回目)のhistoryは履歴に保存されていません。
sakura@ubuntu:~$ history
1 ls -l
2 history
3 export HISTCONTROL=ignoredups
4 history
- 再度、直前に実行したコマンドhistoryを実行します。
直前と同じコマンドなので、今回(3回目)のhistoryは履歴に保存されていません。
sakura@ubuntu:~$ history
1 ls -l
2 history
3 export HISTCONTROL=ignoredups
4 history
sakura@ubuntu:~$
以上、export HISTCONTROL=ignoredups を設定することにより、連続し重複する履歴は保存されないようになります。
常にこの設定を有効にしたい場合は、.bashrcや.bash_profileに追記すればよいでしょう。