以前にインタラクティブシェルセッションで使用されていたコマンドを見つけようとすると、次の ↑ (up arrow)結果が表示されることがあります。
$ls # 1st time push `up arrow`
$ls # 2nd time push `up arrow`
$ls # 3rd time push `up arrow`
$ls # 4th time push `up arrow`
$ls # 5th time push `up arrow`
$ls # 6th time push `up arrow`
$make # 7th time push `up arrow`
$make # 8th time push `up arrow`
$make # 9th time push `up arrow`
$ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" # Bingo!
次のような場合は良いと思います。
$ls # 1st time push `up arrow`
$make # 2th time push `up arrow`
$ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" # Bingo!
重複記録は一般的に役に立たないからです。
Bashでこれを行うにはどうすればよいですか?
ベストアンサー1
ignoredups
HISTControl変数を設定してこれを実行できます。
HISTCONTROL="ignoredups"
オプションでエクスポートし、
export HISTCONTROL="ignoredups"
環境変数として作成します。 ~からbash(1) マニュアルページ:
HISTCONTROL
コマンドが履歴リストに保存される方法を制御するコロンで区切られた値のリスト。値リストにが含まれている場合は、
ignorespace
aで始まる行スペースキャラクターは履歴リストに保存されません。値を使用すると、以前のignoredups
履歴エントリと一致する行は保存されません。の値はandの略語ignoreboth
です。値を指定すると、行を保存する前に、現在の行に一致するすべての前の行が履歴リストから削除されます。上記のリストにない値は無視されます。もしignorespace
ignoredups
erasedups
HISTCONTROL
設定されていない場合、または有効な値が含まれていない場合、シェルパーサーによって読み取られたすべての行は、次の値に従って履歴リストに保存されます。HISTIGNORE
。複数行の複合コマンドの 2 行目以降の行はテストされず、値に関係なく履歴に追加されます。HISTCONTROL
。
これは実際に正確に質問は何を求めますか?ユーザーがruby …
、、、、、、、、、
(別々の連続行で)コマンドを入力すると、履歴リストは、、になりmake
ます。 3回押すとコマンドに戻ります。make
make
ls
ls
ls
ls
ls
ls
ruby …
make
ls
↑ (up arrow)ruby