Zsh通配符失灵
缘起
某些情况下通配符会失灵, 比如:
git rm --cached */.DS_Store
### 系统会提示 no matches found
然后一般的解决方案是, 编辑~/.zshrc
setopt no_nomatch
因缘
http://forum.ubuntu.org.cn/viewtopic.php?t=284253
原文抄录这里, 向aerofox大神致敬
-
问题: 如 $ scp ip:/home/tommy/* .在bash下可以执行,而在zsh下不可以识别通配符。请问为什么?
- shell 不会按照远程地址上的文件去扩展参数,当你使用 ip:/home/tommy/,因为本地当前目录中,十不存在 ip:/home/tommy/,所以匹配失败。默认情况下,bash 在匹配失败时就使用原来的内容,zsh 则报告一个错误。在 zsh 中执行 setopt nonomatch 则告诉它不要报告 no matches 的错误,而是当匹配失败时直接使用原来的内容。
- 实际上,不管是 bash 还是 zsh,不管设置了什么选项,只要把 ip:/home/tommy/* 加上引号,就可解决问题。