永远不要解析ls的输出
我的建议是避免解析ls [ 1 ] 的输出,甚至与del
命令结合使用时也是如此。由于许多原因,这主要与文件名中允许的意外字符和非常规字符有关。
即使您应该期望属于Linux软件包的文件名“表现得很好”,但如果同一目录中存在其他文件,但您不知道或没有注意到,则仍然可能出现此问题。
最好使用find
,将选项卡扩展(开始写名称并按Tab),将文件名扩展 [ 2 ]用作*MyKey*
...
快速的解决方案
由于您想选择所有.deb
带有“ google”的包(以结尾),因此您可以使用通配符构建请求*
*google*.deb
并执行简单的操作
rm -i *google*.deb
会选择中间带有“ google”的每个文件名,该文件名将最终显示在当前目录中。选项(交互式)将提示您进行确认,这是使用参数扩展删除文件时的一个好习惯。.deb
-i
溶液接近你尝试的理念,
如果你的目的是要建立的片之后,你的命令行一块,所以你做了ls
,以后ls | grep google
,和你检查你的输出后,只可以在子shell执行它$(...)
与
rm -i $(ls | grep google)
甲更快,更危险的方式 [ 3 ],是使用!!
ls | grep google
rm -i $(!!)
它将执行您历史记录中最后完成的命令。如果事先使用启用了shell选项histverify
,则可以保护自己免受将要执行的行的视觉控制shopt -s histverify
。
rm -i *chrome*.deb