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的,由此即使水珠不匹配的命令仍然可能运行的不良特性。