ZSH:
sudo apt-get remove --purge ubuntuone-*
ERROR: zsh: no matches found: ubuntuone-*
Run Code Online (Sandbox Code Playgroud)
适用于 Bash。有什么问题 ?:-D
Dav*_*due 18
是的,zsh并且bash在这方面表现不同。
在 中zsh,当您说“ ubuntuone-*”时,它会在您当前的工作目录中查找以ubuntuone--开头的文件- 因为它没有找到任何文件,所以它会说“ no matches”并且不运行该命令。
bash采取不同的策略 - 它还查找以ubuntuone-当前工作目录开头的文件,但如果找不到任何文件,它会对自己说,“也许我正在调用的程序知道如何处理通配符,”然后就通过了“ ubuntuone-*" off tosudo apt-get作为字面参数。
如果当前工作目录中有一个名为 的文件ubuntuone-ffdjhjer,那么 bash 会尝试执行sudo apt-get remove --purge ubuntuone-ffdjhjer,这可能会失败。
在zsh( 和 in bash) 中,您可以使用单引号告诉它不要扩展通配符而是传递它,如下所示:
sudo apt-get remove --purge 'ubuntuone-*'
Run Code Online (Sandbox Code Playgroud)
小智 11
这个答案可能有点晚了,但有办法解决这个问题。从命令行执行:
unsetopt no_match
Run Code Online (Sandbox Code Playgroud)
小智 6
还有另一种方法可以防止 zsh 中的扩展,我更喜欢这种方法而不是引号:
sudo apt-get remove --purge ubuntuone-\*
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10803 次 |
| 最近记录: |