空白で始まる場合は、zshシェル履歴から古いコマンドを削除できますか?

空白で始まる場合は、zshシェル履歴から古いコマンドを削除できますか?

私は以下を持っています回答履歴から行を削除する方法は?。次の操作を実行すると、その行( 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

おすすめ記事