/ / Wie kann ich zsh bestimmte Befehle aus dem Verlauf ausschließen lassen? - zsh, zshrc

Wie kann ich zsh bestimmte Befehle aus dem Verlauf ausschließen lassen? - zsh, zshrc

Wie zum Beispiel diejenigen, die das Wort "Produktion" enthalten?

Antworten:

4 für die Antwort № 1
function zshaddhistory() {
emulate -L zsh
if [[ $1 != *"production"* ]] ; then
print -sr -- "${1%%$"n"}"
fc -p
else
return 1
fi
}

Setzen Sie das obige auf eine Datei, die beim Start der interaktiven Shell (to .zshrc oder zu einer Datei, von der stammt .zshrc so wie ich).

Alternative Form (implizite Ergänzung zur Historie):

function zshaddhistory() {
emulate -L zsh
if [[ $1 = *"production"* ]] ; then
return 1
fi
}

. Hinweis:

print -sr -- "${1%%$"n"}"

Fügt das Objekt explizit dem Verlauf hinzu. Aber das gleiche Ding implizit tut zsh wenn zshaddhistory gibt mit Null-Exit-Code zurück, also ohne fc -p und mit setopt nohistignoredups nohistignorealldups (Dies ist der Standardstatus) Sie sehen unnötige Duplikate im Verlauf.

emulate -L zsh ist hier, um sicherzustellen, dass die Emulationseinstellungen nicht einspringen und die Interpretation des Funktionskörpers ändern. Ich lege diese Zeile an den Anfang jeder Funktion, die ich in der zsh-Konfiguration definiere.