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


historyの履歴に重複するコマンド履歴を保存しない方法

historyで確認できるコマンド履歴上に重複するコマンド履歴がある場合、実行したコマンドを履歴に残さない方法があります。
本資料は、この設定に使用する環境変数HISTCONTROLの設定方法について記述しています。
なお、bashを使用して動作確認を行いました。

sakura@ubuntu:~$ LANG=C bash --version
GNU bash, version 4.2.25(1)-release (i686-pc-linux-gnu)
<snip>

関連記事

環境変数HISTCONTROLに関する記事は以下のリンクを参照してください。

HISTCONTROL=erasedupsについて

最初に書いたとおり、コマンド履歴上に同一のコマンドがあった場合、履歴対象となりません。
1回のみの履歴保存となります。
設定方法は以下の通りです。

export HISTCONTROL=erasedups

manコマンドで確認してみる

HISTCONTROLについてmanコマンドを実行してマニュアルを見てみます。

$ man bash
<snip>
      HISTCONTROL
             A colon-separated list of values controlling  how  commands  are
             saved  on  the  history  list.   If  the list of values includes
             ignorespace, lines which begin with a space  character  are  not
             saved  in  the history list.  A value of ignoredups causes lines
             matching the previous history entry to not be saved.  A value of
             ignoreboth is shorthand for ignorespace and ignoredups.  A value
             of erasedups causes all previous lines matching the current line
             to  be  removed from the history list before that line is saved.
             Any value not in the above list is ignored.  If  HISTCONTROL  is
             unset,  or does not include a valid value, all lines read by the
             shell parser are saved on the history list, subject to the value
             of  HISTIGNORE.  The second and subsequent lines of a multi-line
             compound command are not tested, and are added  to  the  history
             regardless of the value of HISTCONTROL.
<snip>

上記の出力からわかるように以下のように記されています。
A value of erasedups causes all previous lines matching the current line to be removed from the history list before that line is saved.

HISTCONTROL=erasedups を試してみるします。

HISTCONTROL=erasedupsを実際に設定し実行した出力例です。

  1. histroy -c コマンドにより履歴を削除します。
    sakura@ubuntu:~$ history -c
  2. 環境変数HISTCONTROLにerasedupsを設定します。
    sakura@ubuntu:~$ export HISTCONTROL=erasedups
  3. ls -lコマンドを実行します。
    sakura@ubuntu:~$ ls -l
    合計 0
  4. dateコマンドを実行します。
    sakura@ubuntu:~$ date
    2013年 12月  5日 木曜日 21:46:52 JST
  5. 再度ls -lコマンドを実行します。
    sakura@ubuntu:~$ ls -l
    合計 0
  6. 再度dateコマンドを実行します。
    sakura@ubuntu:~$ date
    2013年 12月  5日 木曜日 21:46:53 JST
  7. echo ubuntuコマンドを実行します。
    sakura@ubuntu:~$ echo ubuntu
    ubuntu
  8. echo centosコマンドを実行します。
    sakura@ubuntu:~$ echo centos
    centos
  9. 再度echo ubuntuコマンドを実行します。
    sakura@ubuntu:~$ echo ubuntu
    ubuntu
  10. 再度echo centosコマンドを実行します。
    sakura@ubuntu:~$ echo centos
    centos
  11. historyコマンドを実行するとユニークなコマンドのみ履歴として保存されているのが確認できます。
    sakura@ubuntu:~$ history
        1  export HISTCONTROL=erasedups
        2  ls -l
        3  date
        4  echo ubuntu
        5  echo centos
        6  history
    sakura@ubuntu:~$

以上、HISTCONTROL=erasedupsに関する記事でした。



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