Come impedire che un comando nello zshell venga salvato nella cronologia?


Risposte:


37

Utilizza l'opzione HIST_IGNORE_SPACE.

setopt HIST_IGNORE_SPACE

zshoptions uomo

hist_ignore_space

Rimuovere le righe di comando dall'elenco cronologico quando il primo carattere sulla riga è uno spazio o quando uno degli alias espansi contiene uno spazio iniziale. Si noti che il comando rimane nella cronologia interna fino a quando non viene immesso il comando successivo prima che scompaia, consentendo di riutilizzare o modificare brevemente la riga. Se vuoi farlo svanire immediatamente senza immettere un altro comando, digita uno spazio e premi Invio.


Vorrei poterlo fare per tutti i comandi-digitati-in-un-terminale-finestra-da-aperto su OSX. Per quando ti rendi conto che hai abbaiato l'albero sbagliato.
Dan Rosenstark,

2
E poi, per i comandi che volevo impedire, ho usato gli alias e ho prefissato uno spazio: alias jrnl = "jrnl"
Sagar Jauhari,

2
@Yar uccide -9 quella shell (se non esegue la scrittura del file cronologico riga per riga)
Michael Shigorin,

1
@MichaelShigorin Grazie! kill -9 $$è davvero fantastico evitare che tutti i comandi emessi nella sessione terminale corrente vengano memorizzati nella cronologia.
Jeffrey Lebowski,

2
@CMCDragonkai Potresti unset HISTFILEprima del tuo blocco di comandi. Dovresti reimpostare in HISTFILEseguito o aprire una nuova shell per mantenere i comandi nella cronologia che desideri.
Chauncey Garrett,

2

Se desideri un controllo più granulare su ciò che viene aggiunto alla cronologia di ZSH, puoi definire la zshaddhistoryfunzione in .zshrc. La seguente definizione utilizza una regex per definire un modello da ignorare:

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

Si noti che il comportamento da man zshoptssotto HIST_IGNORE_SPACEè ancora presente:

Si noti che il comando rimane nella cronologia interna fino a quando non viene immesso il comando successivo prima che scompaia, consentendo di riutilizzare o modificare brevemente la riga.

Quindi per provarlo, dovresti fare un extra [Enter]. Ciò rimuove sia il comando dall'output di history, sia la cronologia della freccia ↑.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.