Quantcast
Channel: Bashタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 2722

Bashのhistoryで表示される重複したコマンドを消したい

$
0
0

history で重複したコマンドを消したい

historyを叩いた

入力したコマンドを確認したくてhistoryコマンドを入力すること、ありますよね。

$ history
...
2000  ll
2001  cd ./hoge
2002  ls
2003  ll
2004  cd ../
2005  history
2006  ll
2007  cd ~
2008  ls
2009  history
...

「いやllとかls多いな?」

重複したコマンドの消し方

重複したコマンドを消去するには.bashrc に

HISTCONTROL=erasedups

を追記すればよいです。

$ source .bashrc

で.bashrcを再度読み込めば設定が反映されます。

HISTCONTROLとは

入力したコマンドがどのように保存されるか決定する値。
http://www.gnu.org/software/bash/manual/bash.html#index-HISTCONTROL

HISTCONTROL=value
value設定内容
ignorespace空白文字で始まる行を保存しない
ignoredupsひとつ前の履歴エントリと一致する行を保存しない
ignorebothignorespace と ignoredups の省略形
erasedups現在の行と一致する履歴を保存前にすべて削除する

ignoredupserasedupsは似ているように思えますが、

  • ignoredupsは直前に入力したコマンドと同一のコマンドを入力した場合、そのコマンドを保存しない設定
  • erasedupsは入力したコマンドと同一のコマンドが履歴に存在した場合、昔の履歴を削除する設定

という違いがあります。

注意点

erasedupsを設定すると、昔の履歴も消去するので、コマンド履歴が時系列順に並ばなくなります。
コマンド履歴が時系列順に並んでいることを期待する場合は使わないほうがよさそう。

lsとかcdだけ保存しないようにできないの?

そういった細かい設定をしたい場合は、HISTIGNOREを使えば良いようです。
この記事では割愛します。
http://www.gnu.org/software/bash/manual/bash.html#index-HISTIGNORE

参考

http://www.gnu.org/software/bash/manual/bash.html#Bash-Variables
https://qiita.com/bezeklik/items/56a597acc2eb568860d7


Viewing all articles
Browse latest Browse all 2722

Trending Articles