同じコマンドが私の履歴に何度もリストされています。どうすればこれを回避できますか? HISTCONTROL
を介して可能であることは知っていますが、正しい方法が見つかりませんでした。
bash
manページから:
ヒストコントロール
コマンドを履歴リストに保存する方法を制御する、コロンで区切られた値のリスト。値のリストに
ignorespace
が含まれる場合、スペース文字で始まる行は履歴リストに保存されません。値がignoredups
の場合、前の履歴エントリに一致する行は保存されません。ignoreboth
の値は、ignorespace
およびignoredups
の省略形です。値がerasedups
の場合、現在の行に一致する以前のすべての行は、その行が保存される前に履歴リストから削除されます。上記のリストにない値は無視されます。 HISTCONTROLが設定されていない場合、または有効な値が含まれていない場合、シェルパーサーによって読み取られたすべての行がHISTIGNOREの値に従って履歴リストに保存されます。複数行の複合コマンドの2行目以降はテストされず、HISTCONTROLの値に関係なく履歴に追加されます。
したがって、次の行を~/.bashrc
に追加します。
export HISTCONTROL=ignoreboth:erasedups
これを~/.bashrc
に貼り付けます:
export HISTCONTROL=ignoredups
代わりにignoreboth
を使用できます。これは、ignorespaces
(スペースで始まるコマンド)とignoredups
(重複)の両方の略記です。
ウェブサイトからコマンドをコピーすると、スペースを含むコマンドを無視するデフォルトの動作が非常に迷惑であり、誤ってスペースにコピーしたため保存されないため、ignoredups
を単独で使用します。 ...しかし、それぞれに。
これを~/.bashrc
に入れると、異なるセッション間で@alvinのソリューションがwlellとして適用されます
HISTCONTROL=ignoredups:erasedups
shopt -s histappend
Prompt_COMMAND="history -n; history -w; history -c; history -r; $Prompt_COMMAND"
ソース: Linux:Bashの履歴:「ignoredups」および「erasedups」の設定は、セッション全体で共通の履歴と競合します
export HISTCONTROL=erasedups
以下を~/.bashrc
に追加します。
export HISTCONTROL=ignoredups
これを行うには、次のコマンドを使用できます。
nano ~/.bashrc
すべての新しいコマンドを一意に記録することは注意が必要です。最初に~/.profile
などに追加する必要があります:
HISTCONTROL=erasedups
Prompt_COMMAND='history -w'
次に、~/.bash_logout
に追加する必要があります。
history -a
history -w