私は以下を持っています回答履歴から行を削除する方法は?。次の操作を実行すると、その行(echo hello_world
)は履歴に保存されません。私はzsh
シェルを使用しています。
prompt$ echo hello_world
> # ^ extra space
$ history | tail -n1
1280 history | tail -n
$ echo hello_world
hello_world
$ history | tail -n1
1280 history | tail -n
しかし、doの後に空白のあるコマンドを実行すると、保存されていなくてもCtrl+Pシェル履歴に表示されますhistory
。これを防ぐことができますか?シェルの場合、bash
これはsetのときに機能しますHISTCONTROL= ignorespace
。
$ echo hello_world
$ # Press `CTRL-p` => " echo hello_world" shows up again
設定:シェルには次の設定があります
zsh
。
## Save only one command if 2 common are same and consistent
setopt HIST_IGNORE_DUPS
setopt HIST_IGNORE_ALL_DUPS
## Delete empty lines from history file
setopt HIST_REDUCE_BLANKS
## Ignore a record starting with a space
setopt HIST_IGNORE_SPACE
## Do not add history and fc commands to the history
setopt HIST_NO_STORE
## Add timestamp for each entry
setopt EXTENDED_HISTORY
答え1
Ctrl+P空白で始まり、設定されていてもキーを押すと、前のコマンドが返される観察された動作が文書HIST_IGNORE_SPACE
化されています(強調表示)。
HIST_IGNORE_SPACE
(-g
)コマンドラインの最初の文字が空白の場合、または拡張エイリアスの1つに先行スペースが含まれている場合は、履歴リストからコマンドラインを削除します。グローバルまたはサフィックスのエイリアスではなく、通常のエイリアスにのみこの動作があります。 これらのコマンドは、次のコマンドが入力されるまで内部履歴に残るため、その行をしばらく再利用または編集できます。他のコマンドを入力せずにすぐに消えるようにするには、スペースを入力してEnterキーを押します。
マニュアルによると、回避策はスペースを入力してそのコマンドに再度アクセスできEnterないようにすることです。Ctrl+P
答え2
これがあなたが探しているものであるかどうかはわかりませんが、記録には不要なコマンドを実行する前に、次を使用して現在のシェルに対して無効にすることができます。
$設定+o履歴
その後、ctrl-pはそれだけを表示し、それ以降は何も表示しません。