Синтаксис в 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,] *
право?
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# *)'