我有setopt extended_glob
,我想排除以~/.config/zsh
或_
文件名 或 开头的completion.zsh
所有文件options.zsh
我有这个命令:
for f (${${(%):-%x}:P:h:h}/**/([^_|^completion|^options])*.zsh) print $f
Run Code Online (Sandbox Code Playgroud)
它完成了这项工作,但上面的命令也排除了lazyload.zsh
,为什么上面的命令排除这个模式?我预计它会打印出来lazyload.zsh
。
只是:
\n\n${${(%):-%x}:P:h:h}/**/(^(_|completion|options)*).zsh\n
Run Code Online (Sandbox Code Playgroud)\n\n^
是extendedglob
否定运算符。
记住[anything]
只匹配一个字符\xc2\xb9。
[a|b]
匹配a
,|
或b
,[^a|b]
匹配除a
,|
或 之外的任何字符b
。
因此,您的模式排除了lazyload.zsh
,因为它位于单字符匹配运算符l
排除的字符列表中。[^...]
\xc2\xb9 (在zsh
; 在某些其他 shell 中,它还可能匹配某些语言环境中的多字符整理元素;zsh[...]
还可以匹配不构成有效字符部分的字节,YMMV 与其他 shell)
归档时间: |
|
查看次数: |
299 次 |
最近记录: |