读过apt-get remove 删除的通配符比预期的多。为什么?*
(在我自己犯了类似的错误之后),我对使用那些我不完全熟悉的命令更加谨慎了。
清楚地
sudo apt-get remove k3b*
没有按照用户想要的方式运行,我发现自己真的想知道:当使用通配符时,还有哪些命令不会按照某些用户的意图运行?
答案1
来自 bash 手册:
路径名扩展:在单词拆分之后,除非设置了 -f 选项,否则 bash 会扫描每个单词以查找字符 *、? 和 [。如果出现这些字符之一,则该单词将被视为模式,并替换为与该模式匹配的按字母顺序排序的文件名列表。如果没有找到匹配的文件名,并且未启用 shell 选项 nullglob,则该单词保持不变。
因此,bash 通常会尝试进行路径名扩展(在您使用的 apt-get 示例中,使用当前目录中的文件),如果失败,则该词将传递给应用程序。
如果您不打算使用 shell globs 进行路径名扩展,那么应用程序将随意解释您的通配符,并且您可以预期的行为将取决于应用程序。
如果您不确定,我强烈建议您在传递通配符之前阅读命令手册。