또는 filename 또는으로 시작하는 모든 파일을 setopt extended_glob
제외하고 싶습니다 .~/.config/zsh
_
completion.zsh
options.zsh
나는 다음 명령을 가지고 있습니다 :
for f (${${(%):-%x}:P:h:h}/**/([^_|^completion|^options])*.zsh) print $f
작업을 수행하지만 위 명령도 이를 제외합니다 lazyload.zsh
. 위 명령이 이 패턴을 제외하는 이유는 무엇입니까? 나는 그것이 인쇄될 것으로 예상했다 lazyload.zsh
.
답변1
오직:
${${(%):-%x}:P:h:h}/**/(^(_|completion|options)*).zsh
^
extendedglob
부정 연산자 입니다 .
[anything]
단 하나의 문자, 1만 일치해야 한다는 점을 기억하세요 .
[a|b]
a
, |
또는 과 일치 합니다. b
또는 를 제외한 [^a|b]
모든 문자 와 일치합니다.a
|
b
따라서 패턴은 lazyload.zsh
단일 문자 일치 연산자 l
에 의해 제외된 문자 목록에 있으므로 제외됩니다.[^...]
¹ ( zsh
다른 쉘에서는 일부 로케일의 다중 문자 조합 요소와 일치할 수도 있습니다. zsh는 [...]
유효한 문자의 일부가 아닌 바이트, 다른 쉘의 YMMV와 일치할 수도 있습니다)