我已经检查过这个页面(如何从 /usr 目录中删除单个文件?)并尝试
sudo rm /usr/share/applications/Eclipse Mars C/C++.desktop
在终端,但它不起作用。
我认为原因是我使用了不同的版本(我的是 Ubuntu 14.04)。
是否有任何解决方案或其他命令可以让 Ubuntu 14.04 删除不需要的文件?
答案1
这是因为文件名包含空格。因此rm
命令将其解释为多个参数,这并非预期结果,显然会失败。
您需要将文件名放在引号中以作为单个参数传递:
sudo rm "/usr/share/applications/Eclipse Mars C/C++.desktop"
但是正如@JacobVlijm 指出的那样,Eclipse Mars C/C++.desktop
没有有效的文件名,因为唯一可能不包含在文件名中的字符,因为它分隔了目录:(/
斜线)。
如果上述命令确实有效,则意味着您C++.desktop
在目录内有该文件/usr/share/applications/Eclipse Mars C
,但这不太可能,因为这不是.../applications
目录的推荐结构。
但如果我们假设这个文件确实存在,如上一段所述,那么还有另一种正确输入文件名的方法。你可以用\
(反斜杠)转义所有空格,而不是用引号括起来整个名称:
sudo rm /usr/share/applications/Eclipse\ Mars\ C/C++.desktop
但请注意,这rm
只会删除文件,而不会删除目录。由于我们假设(因为其他一切都在理论上是不可能的),这Eclipse Mars C/C++.desktop
不是文件,而是子目录中的文件,因此我们尚未实现我们想要的结果,因为仍然会保留(可能为空的)目录/usr/share/applications/Eclipse Mars C
。要同时删除此子目录及其包含的所有文件(因此您可以省略上述命令以仅删除文件),我们必须使用以下命令变体之一:
sudo rm -r "/usr/share/applications/Eclipse Mars C"
sudo rm -r /usr/share/applications/Eclipse\ Mars\ C
注意,我们现在不引用文件名,而只引用目录名。并且我们使用参数-r
for rm
,代表“递归删除”。
答案2
尝试输入如下命令:
sudo rm /usr/share/applications/Eclipse\ Mars\ C
然后按TAB。它会自动完成,此时您应该运行该命令,它会删除。将其放在引号中可能会起作用,但/
名称中也有,所以可能会导致错误,所以最好让 Bash 为您处理。
答案3
尝试:
sudo rm /usr/share/applications/Eclipse\ Mars\ C\/C++.desktop
或者直接让终端输入以下代码来写出名字:
sudo rm /usr/share/applications/Eclipse
并点击TAB,以防我的反斜杠输入错误