为什么这个文件名在 Nautilus 中被截断?

H2O*_*aCl 7 gui nautilus files .desktop

在 Ubuntu 中,文件名的“扩展名”,即点 (.) 之后的部分通常是可见的。eclipse.desktopls命令清楚地显示完整文件名时,为什么 Nautilus 没有显示扩展名?

这是list view; 不是icon view.

截屏

sou*_* c. 20

引用Ubuntu 的安全政策

需要执行权限位

  • 应用程序(包括桌面和外壳程序)在以下情况下不得从文件运行可执行代码:

    • 缺少可执行位
    • 位于用户的主目录或临时目录中。
  • 这包括 *.desktop、*.jar 和 *.exe 文件。

.desktop用户主目录下的有效文件是什么?

根据 Ubuntu 的安全策略,当.desktops文件和 shell 脚本位于用户的主目录时,要从这些文件运行可执行代码,必须具有执行权限。

Nautilus 不会将.desktop文件视为有效的应用程序快捷方式,除非它位于用户的主目录中时具有可执行位。

另一方面,它在 nautilus 的源代码中进行了硬编码,它将显示.desktop来自文件内的Name=orName[$LANG]字段的有效文件名,而.desktop忽略文件名和扩展名。这不适用于nautilus 中的.sh.jar文件。

示例:在全新的 Ubuntu 安装中,每个用户都会examples.desktop进入他们的主目录。文件名为examples.desktop. 但在鹦鹉螺中,人们可以将其视为Examples. 如果您查看.desktop文件内部,您可以看到以下内容(我只展示了其中的一部分):

名称=示例
名称[aa]=Ceeallo
..
名称[en_AU]=示例
名称[en_CA]=示例
名称[en_GB]=示例
..

您可以检查的权限(TRY ls -la /path/to/filename.extension)的Eclipse.desktopsmartgit.desktop。前者设置了可执行位,而后者没有。

这就是 nautilus 识别Eclipse.desktop为应用程序快捷方式而不显示其扩展名的原因。

  • @H2ONaCl 它确实与文件名截断有关。一旦 .desktop 文件可执行,就可以设置文件内设置的应用程序名称。假设你可以有 `myapp.desktop` 并且它有 `Name=Some Cool App` 行。设置可执行权限后,文件名才能显示为“Some Cool App”。当然,该文件也必须采用正确的格式,并且实际上具有该 `Name=` 行。顺便说一句,请参阅 souravc 编辑的答案,它已更新。 (2认同)

Jac*_*ijm 18

关于 .desktop 文件及其特殊功能

.desktop文件是特殊文件。它们代表GUI 中的应用程序,无论是在桌面上还是在 Dash/Unity 中。为此,一个应用程序GUI 名称在行中的文件内的一行中设置

Name=Eclipse
Run Code Online (Sandbox Code Playgroud)

您可以简单地更改应用程序在 Dash 和 Unity 中的显示方式的名称,方法是在 .desktop文件中的,而无需更改文件的文件.desktop。在这种情况下,文件是否可执行无关紧要。

如果.desktop文件是您的桌面上。然而,如果是不可执行,则它不能作为启动器工作,原因在 souravac 的回答中解释过,并以它自己的(文件)名称“显示”:

eclipse.desktop
Run Code Online (Sandbox Code Playgroud)

如果它 可执行的并且在您的桌面上,则它作为启动器工作,因此它代表一个应用程序。然后它显示应用程序的名称,如行中设置的Name=

语言特定名称

如果.desktop文件有一行:

X-Ubuntu-Gettext-Domain
Run Code Online (Sandbox Code Playgroud)

该文件甚至会显示从语言文件中获取的特定语言名称,然后该名称将显示在 Dash 和 Unity 中。


下面是一个复杂的例子:文件名 =inkskape.desktop,“基本”界面名称 = Inkskape,翻译名称 = Inkskape Vector Graphics Editor

在此处输入图片说明

ls 命令

ls命令完全基于 cli,并且始终显示文件名


Ale*_*exP 6

如果.desktop文件是可执行的,那么 Nautilus 会将其识别为桌面快捷方式,并且不会显示文件的名称,而是显示设置为Name=文件中属性值的字符串。