または、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文字、1だけ一致する必要があることを覚えておいてください。
[a|b]
a
、|
または と一致します。b
またはを除く[^a|b]
すべての文字と一致します。a
|
b
したがって、パターンはlazyload.zsh
単一文字一致演算子l
によって除外された文字のリストにあるため除外されます。[^...]
¹(zsh
他のシェルでは、一部のロケールの複数文字の組み合わせ要素と一致する可能性があります。zshは[...]
有効な文字の一部ではないバイト、他のシェルのYMMVと一致する可能性があります)