如何从 ubuntu 14.04 上的 usr/share/applications 中删除文件

如何从 ubuntu 14.04 上的 usr/share/applications 中删除文件

我已经检查过这个页面(如何从 /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

注意,我们现在不引用文件名,而只引用目录名。并且我们使用参数-rfor 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,以防我的反斜杠输入错误

相关内容