Como impedir que um comando no zshell seja salvo no histórico?

22

No Bash eu sei que colocar um espaço antes de um comando impede que ele seja mantido no histórico, o que é equivalente para o zshell?

    
por bneil 01.11.2011 / 17:01

2 respostas

31

Use a opção HIST_IGNORE_SPACE.

setopt HIST_IGNORE_SPACE

man zshoptions

HIST_IGNORE_SPACE

Remove command lines from the history list when the first character on the line is a space, or when one of the expanded aliases contains a leading space. Note that the command lingers in the internal history until the next command is entered before it vanishes, allowing you to briefly reuse or edit the line. If you want to make it vanish right away without entering another command, type a space and press return.

    
por 01.11.2011 / 19:32
1

Se você deseja um controle mais granular sobre o que é adicionado ao histórico do ZSH, é possível definir a função zshaddhistory em .zshrc . A definição a seguir usa um regex para definir um padrão para ignorar:

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

Observe que o comportamento de man zshopts em HIST_IGNORE_SPACE ainda está presente:

Note that the command lingers in the internal history until the next command is entered before it vanishes, allowing you to briefly reuse or edit the line.

Então, para testá-lo, você teria que atingir um [Enter] extra. Isso remove o comando da saída de history e também do histórico da seta..

    
por 31.10.2018 / 16:31