¿Cómo evitar que un comando en el zshell se guarde en el historial?

Respuestas:

37

Use la opción HIST_IGNORE_SPACE.

setopt HIST_IGNORE_SPACE

zshoptions hombre

HIST_IGNORE_SPACE

Elimine las líneas de comando de la lista del historial cuando el primer carácter de la línea sea un espacio o cuando uno de los alias expandidos contenga un espacio inicial. Tenga en cuenta que el comando permanece en el historial interno hasta que se ingresa el siguiente comando antes de que desaparezca, lo que le permite reutilizar o editar brevemente la línea. Si desea que desaparezca de inmediato sin ingresar otro comando, escriba un espacio y presione Intro.

Darren Hall
fuente
Desearía poder hacer esto para todos los comandos-escritos-en-una-terminal-ventana-desde-abierto en OSX. Para cuando te das cuenta de que has estado ladrando el árbol equivocado.
Dan Rosenstark el
2
Y luego, para los comandos que quería evitar, usé alias y prefije un espacio: alias jrnl = "jrnl"
Sagar Jauhari el
2
@Yar kill -9 ese shell (si no lo hace, el archivo de historial de línea por línea escribe)
Michael Shigorin
1
@MichaelShigorin ¡Gracias! kill -9 $$De hecho, es fantástico evitar que todos los comandos emitidos en la sesión de terminal actual se almacenen en el historial.
Jeffrey Lebowski
2
@CMCDragonkai Podría unset HISTFILEantes de su bloque de comandos. Tendría que restablecer HISTFILEdespués o abrir un nuevo shell para mantener los comandos en su historial que desee.
Chauncey Garrett
2

Si desea un control más granular sobre lo que se agrega al historial de ZSH, puede definir la zshaddhistoryfunción en .zshrc. La siguiente definición utiliza una expresión regular para definir un patrón a ignorar:

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

Tenga en cuenta que el comportamiento desde man zshoptsabajo HIST_IGNORE_SPACEtodavía está presente:

Tenga en cuenta que el comando permanece en el historial interno hasta que se ingresa el siguiente comando antes de que desaparezca, lo que le permite reutilizar o editar brevemente la línea.

Entonces para probarlo, tendrías que golpear un extra [Enter]. Esto elimina el comando tanto de la salida como del historyhistorial de flechas ↑.

Gogstad
fuente