回答:
そして、私は別の答えを思い出しました。これはあなたの質問に対する実際の答えです。
HISTCONTROLに「ignorespace」がある場合、bashはスペース文字で始まる行を記憶しません。現在のシェルの履歴にも表示されず、もちろん$ HISTFILEに保存されます。
例:〜/ .bashrcにHISTCONTROL = 'ignoreboth:erasedups'をエクスポートしています
bashのmanページの詳細は次のとおりです。
ヒストコントロール コマンドの実行方法を制御する値のコロン区切りリスト 履歴リストに保存されました。値のリストに含まれている場合 ignorespace、スペース文字で始まる行は 履歴リストに保存されました。ignoreupsの値は行を引き起こします 保存されない前の履歴エントリと一致します。値 ignorebothは、ignorespaceおよびignoreupsの省略形です。価値 erasedupsにより、以前のすべての行が現在の行と一致します その行が保存される前に履歴リストから削除されます。 上記のリストにない値は無視されます。HISTCONTROLが 設定されていない、または有効な値が含まれていない シェルパーサーは、値に応じて履歴リストに保存されます HISTIGNOREの。複数行の2行目以降 複合コマンドはテストされず、履歴に追加されます HISTCONTROLの値に関係なく。
HISTFILE
変数を設定解除できます。からman bash
:
履歴ファイル コマンド履歴が保存されるファイルの名前(HIS- 下のTORY)。デフォルト値は〜/ .bash_historyです。設定されていない場合、 対話式シェルの場合、コマンド履歴は保存されません 終了します。
これにより、シェルが終了する前にコマンドがローカルシェル履歴に表示されるのを防ぐことはできないと思います。
誰もこのメソッドを書いていないので、そうするつもりです。
history -d $((HISTCMD-1)) && history -d <command or number of command>
history -d
指定されたエントリを履歴から削除します。
HISTCMD
次に実行されるコマンドのcommand_numberを格納します。したがって、(HISTCMD-1)は最後に実行されたコマンドを指します。
https://asciinema.org/a/dtxpuovhty0obhln50soqypt2の仕組みを示す短いbashムービーを作成しました
コマンドを実行した後、コマンド自体も削除されるため、矢印を上に移動してもコマンドは表示されないため、頻繁に使用する予定がある場合は、エイリアスを作成することをお勧めします。
alias hc='history -d $((HISTCMD-1)) && history -d $1'
その後、次のことができます。
$ hc command