通配符处理
当没有任何东西与 bash 中的*
这样的通配符匹配时,它会作为文字*
传递给命令,就好像你输入了\*
一样。但是,zsh 会抛出错误。
击:
duncan@K7DXS-Laptop-Arch:~/test$ echo *.txt
*.txt
duncan@K7DXS-Laptop-Arch:~/test$ touch abc.txt
duncan@K7DXS-Laptop-Arch:~/test$ echo *.txt
abc.txt
duncan@K7DXS-Laptop-Arch:~/test$
岩组:
K7DXS-Laptop-Arch% echo *.txt
abc.txt
K7DXS-Laptop-Arch% rm abc.txt
K7DXS-Laptop-Arch% echo *.txt
zsh: no matches found: *.txt
K7DXS-Laptop-Arch%
这在使用文字*
的程序中最为明显,例如 find:
duncan@K7DXS-Laptop-Arch:~/test$ ls -R
.:
abc
./abc:
123.txt
击:
duncan@K7DXS-Laptop-Arch:~/test$ find -name *.txt
./abc/123.txt
duncan@K7DXS-Laptop-Arch:~/test$
岩组:
K7DXS-Laptop-Arch% find -name *.txt
zsh: no matches found: *.txt
K7DXS-Laptop-Arch% find -name \*.txt
./abc/123.txt
K7DXS-Laptop-Arch% find -name '*.txt' # Notice single rather than double quotes
./abc/123.txt
K7DXS-Laptop-Arch%