Answers:
是的,zsh
和bash
不同的表现在这方面。
在中zsh
,当您说“ ubuntuone-*
”时,它将在当前工作目录中查找以ubuntuone-
- 开头的文件,因为找不到任何文件,因此显示“ no matches
”,并且不运行命令。
bash
采取另一种方法-它还会ubuntuone-
在当前工作目录中查找以该文件开头的文件,但如果找不到,它会对自己说:“也许我正在调用的程序知道如何处理通配符,因此通过” ubuntuone-*
“关于sudo apt-get
作为文字说法。
如果当前工作目录中有一个名为的文件ubuntuone-ffdjhjer
,则bash会尝试执行sudo apt-get remove --purge ubuntuone-ffdjhjer
,这可能会失败。
在zsh
(和bash
)中,您可以使用单引号来告诉它不要扩展通配符而是继续传递它,如下所示:
sudo apt-get remove --purge 'ubuntuone-*'
dpkg -l 'linux*'
bash来查看所有已安装的内核。
这个答案可能会晚一点,但是有一种解决方法。从命令行执行:
unsetopt no_match
shopt -s failglob
在bash
以修复 bash
这样它像zsh
等现代炮弹喜欢fish
或者tcsh
是有固定的Bourne shell的,由此即使水珠不匹配的命令仍然可能运行的不良特性。