Я пытаюсь проигнорировать некоторые чувствительные команды от того, чтобы быть сохраненным в файле истории в zsh.
HISTSIZE=1000 # 1000 lines of history within the shell
SAVEHIST=1000 # 1000 lines of history in $HISTFILE
HISTFILE=${HOME}/.zsh_history # Save history to ~/.zsh_history
## Ignore save in $HISTFILE, but still in the shell
HISTORY_IGNORE='([bf]g *|cd ..|l[a,l,s,h,] *|less *|vi[m,] *)'
Но это все еще показывает в файле истории:
% rm .zsh_history
% ls
Desktop Documents Downloads Music peda Pictures Public Templates Videos
% l
Desktop/ Documents/ Downloads/ Music/ peda/ Pictures/ Public/ Templates/ Videos/
% cat .zsh_history
ls
l
cat .zsh_history
Я прочитал zshparam страницу, но она не помогает.
Часть l[a,l,s,h,] *
правильно?
l[a,l,s,h,] *
не соответствует l
потому что []
не разделенный запятыми список вещей расшириться до - это - синтаксис для расширения фигурной скобки. С [...]
, [a,l,s,h,]
совпадает с [alsh,]
и не означает ни одного из alsh
или ничто. Вам нужно l[alsh]#
.
Для ls
, пространство, кажется, повреждает это соответствие, даже при том, что все после этого является дополнительным. Так на практике это, кажется, игнорирует ls
только если это имеет аргумент:
~ ls foo
ls: cannot access 'foo': No such file or directory
~ tail ~/.histfile
HISTORY_IGNORE='([bf]g *|cd ..|l[a,l,s,h,]*|less *|vi[m,] *)'
l
tail ~/.histfile
l
tail ~/.histfile
Кажется, что необходимо сделать *
дополнительный также:
HISTORY_IGNORE='([bf]g *|cd ..|l[alsh]#( *)#|less *|vim# *)'