Синтаксис в HISTORY_IGNORE?

Я пытаюсь проигнорировать некоторые чувствительные команды от того, чтобы быть сохраненным в файле истории в 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,] * правильно?

3
задан 26 January 2018 в 07:13

1 ответ

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# *)'
4
ответ дан 1 December 2019 в 15:50

Другие вопросы по тегам:

Похожие вопросы: