#navi(../)
* HISTOCONTROLのignorespace,ignoredupsを一緒に有効にする方法 [#hda9fd86]
環境変数 ''HISTORYCONTROL'' を設定することにより、コマンドの履歴の保存方法を制御することができます。~
本資料は、[[''ignorespace''>入力したコマンドをhistoryの履歴から除外する方法>Linux環境設定/入力したコマンドをhistoryの履歴から除外する方法]], [[''ignoredups''>同一コマンド続けて実行した時にhistoryの履歴が1つだけになる方法>Linux環境設定/同一コマンド続けて実行した時にhistoryの履歴が1つだけになる方法]] を同時に有効にできる ''ignoreboth''を紹介します。~
本資料は、bashを使用して動作確認を行いました。
 sakura@ubuntu:~$ LANG=C bash --version
 GNU bash, version 4.2.25(1)-release (i686-pc-linux-gnu)
 <snip>

#contents
#htmlinsertpcsp(linux_ads_top.html,linux-sp.html)

* 関連記事 [#bbc79351]
ignorespace, ignoredupsについては以下の記事を参照してください。
- ignorespace~
-[[入力したコマンドをhistoryの履歴から除外する方法>Linux環境設定/入力したコマンドをhistoryの履歴から除外する方法]]
- ignoredups~
-[[同一コマンド続けて実行した時にhistoryの履歴が1つだけになる方法>Linux環境設定/同一コマンド続けて実行した時にhistoryの履歴が1つだけになる方法]]
-[[historyの履歴を削除する>逆引きUNIXコマンド/historyの履歴を削除する]]
-[[特定のコマンドの履歴をhistoryから除外する方法>Linux環境設定/特定のコマンドの履歴をhistoryから除外する方法]]
-[[特定番号のhistoryを削除する方法>逆引きUNIXコマンド/特定番号のhistoryを削除する方法]]
-[[以前実行したコマンドの履歴を確認したい・historyコマンド>逆引きUNIXコマンド/以前実行したコマンドの履歴を確認したい]]
-[[historyの履歴に重複するコマンド履歴を保存しない方法>Linux環境設定/historyの履歴に重複するコマンド履歴を保存しない方法]]
-[[historyの履歴を管理する環境変数HISTCONTROL,HISTIGNOREの記事>Linux環境設定/historyの履歴を管理する環境変数HISTCONTROL,HISTIGNOREの記事]]
-[[historyで確認できるコマンド履歴に日時を追加する方法>Linux環境設定/historyで確認できるコマンド履歴に日時を追加する方法]]

* manコマンドで確認してみる [#p23b81b4]
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 ''ignoreboth'' is shorthand for ''ignorespace'' and ''ignoredups.''

* HISTCONTROL=ignoreboth を試してみる [#c26c8673]
HISTCONTROL=ignorebothを実際に設定し実行した出力例です。
+ history -c コマンドで履歴の消去。
 sakura@ubuntu:~$ history -c
+ HISTCONTROLにignorebothを設定。
 sakura@ubuntu:~$ export HISTCONTROL=ignoreboth
+ ls -l コマンドを実行。
 sakura@ubuntu:~$ ls -l
 合計 0
+ 再度、ls -l コマンドを実行。
 sakura@ubuntu:~$ ls -l
 合計 0
+ 先頭にスペースを入力しdateコマンドを実行。
 sakura@ubuntu:~$  date
 2013年 12月  5日 木曜日 20:28:47 JST
+ 再度、ls -l コマンドを実行。
 sakura@ubuntu:~$ ls -l
 合計 0
+ historyコマンドを実行。~
 sakura@ubuntu:~$ history
     1  export HISTCONTROL=ignoreboth
     2  ls -l
     3  history
 sakura@ubuntu:~$
上記の出力結果を説明すると、ls -l コマンドが2回連続実行されているため、一つしか表示されていません。~
また、2回のls -lコマンド実行後に先頭にスペースを入れdateコマンドを実行しています。~
これは、ignorespaceにより履歴保存の対象外となり、historyの履歴対象になりません。~
また、3回目(最後)のls -lですが、このコマンドを実行する前にスペースありのdateコマンドを実行しているため、~
3回連続でls -lコマンドが実行されたこととなり、最後のls -lが表示されていません。

以上、ignorebothによるHISTOCONTROLのignorespace,ignoredupsを一緒に有効にする方法でした。

#htmlinsertpcsp(linux_ads_btm.html,linux-sp.html)

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS