このエントリーをはてなブックマークに追加


同一コマンド続けて実行した時に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 について

環境変数 HISTCONTROLignoredups を指定することにより、端末から同一コマンドを連続して実行するとき、
重複するコマンドは履歴対象外となります。

export HISTCONTROL=ignoredups

HISTCONTROL=ignoredups 試してみる

以下に HISTCONTROL=ignoredups を設定し試してみます。

  1. history -c により履歴を削除します。
    その後、ls -lコマンドを発行しています。
    sakura@ubuntu:~$ history -c
    sakura@ubuntu:~$ ls -l
    合計 0
  2. historyコマンドを実行すると、ls -lとhistoryコマンドの履歴が確認できます。
    sakura@ubuntu:~$ history
        1  ls -l
        2  history
  3. 環境変数 HISTCONTROL=ignoredups を設定し、再度historyを実行した結果です。
    sakura@ubuntu:~$ export HISTCONTROL=ignoredups
    sakura@ubuntu:~$ history
        1  ls -l
        2  history
        3  export HISTCONTROL=ignoredups
        4  history
  4. 直前に実行したコマンドhistoryを再度実行します。
    直前と同じコマンドなので、今回(2回目)のhistoryは履歴に保存されていません。
    sakura@ubuntu:~$ history
        1  ls -l
        2  history
        3  export HISTCONTROL=ignoredups
        4  history
  5. 再度、直前に実行したコマンド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に追記すればよいでしょう。



トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-03-20 (金) 22:29:48