web-dev-qa-db-ja.com

zshellのコマンドが履歴に保存されないようにするにはどうすればよいですか?

Bashでは、コマンドの前にスペースを置くとコマンドが履歴に保持されないことがわかっています。zshellに相当するものは何ですか?

31
bneil

HIST_IGNORE_SPACEオプションを使用します。

setopt HIST_IGNORE_SPACE

男zshoptions

HIST_IGNORE_SPACE

行の最初の文字がスペースである場合、または展開されたエイリアスの1つに先行スペースが含まれている場合は、履歴リストからコマンドラインを削除します。コマンドが消える前に次のコマンドが入力されるまで、コマンドは内部履歴に残り、その行を簡単に再利用または編集できることに注意してください。別のコマンドを入力せずにすぐに消したい場合は、スペースを入力してReturnキーを押します。

41
Darren Hall

ZSH履歴に何を追加するかをより細かく制御したい場合は、zshaddhistory関数を.zshrcで定義できます。次の定義では、正規表現を使用して、無視するパターンを定義しています。

function zshaddhistory() {
  emulate -L zsh
  if ! [[ "$1" =~ "(^ |^ykchalresp|--password)" ]] ; then
      print -sr -- "${1%%$'\n'}"
      fc -p
  else
      return 1
  fi
}

man zshoptsの下でのHIST_IGNORE_SPACEの動作は引き続き存在することに注意してください。

コマンドが消える前に次のコマンドが入力されるまで、コマンドは内部履歴に残り、その行を簡単に再利用または編集できることに注意してください。

したがって、テストするには、追加の[Enter]をヒットする必要があります。これにより、historyの出力と↑矢印の履歴の両方からコマンドが削除されます。

4
gogstad