最近从 bash 切换过来,我注意到它zsh会尝试扩展每个看起来包含通配符的命令或参数。所以以下几行将不再起作用:
git diff master{,^^}
zsh: no matches found: master^^
scp remote:~/*.txt .
zsh: no matches found: remote:~/*.txt
Run Code Online (Sandbox Code Playgroud)
使上述命令起作用的唯一方法是引用参数,这很烦人。
问:如何配置zsh仍然尝试扩展通配符,但如果没有匹配项,则按原样传递参数?
编辑:可能相关:scp 与 zsh :未找到匹配项
小智 7
这是zsh的预期功能。在使用任何shell 时,最好的做法是引用任何被认为是 shell 的元字符的字符。^是用于在extendedglob设置选项时否定字符串的模式。*是用于匹配零个或多个字符的模式。
您可以通过禁用该选项来停止它nomatch。但是通过这样做,您的未引用模式会使您的语句变得不稳定,具体取决于当前工作目录中可能存在的文件。你不应该那样做。
| 归档时间: |
|
| 查看次数: |
3780 次 |
| 最近记录: |