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

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

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

这是list view;不是icon view

截屏

答案1

引自Ubuntu 的安全政策

需要执行权限位

  • 应用程序(包括桌面和 shell)在满足以下条件时不得运行文件中的可执行代码:

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

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

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

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

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

例子:在全新安装的 Ubuntu 中,每个用户都会examples.desktop进入自己的主目录。文件名为examples.desktop。但在 nautilus 中,它显示为Examples。如果您查看文件内部,.desktop则可以看到以下内容(我仅显示其中的一部分):

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

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

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

答案2

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

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

Name=Eclipse

您只需更改文件中的这一行,即可更改应用程序在 Dash 和 Unity 中的显示名称,而.desktop无需更改文件文件名.desktop。在这种情况下,文件是否可执行并不重要。

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

eclipse.desktop

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

语言特定名称

如果.desktop文件包含以下行:

X-Ubuntu-Gettext-Domain

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


下面是一个复杂的例子:文件名 = inkskape.desktop,“基本”界面名称 = Inkskape,翻译名称 = Inkskape 矢量图形编辑器

在此处输入图片描述

ls 命令

ls命令中纯粹基于cli,并且始终显示文件-姓名。

答案3

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

答案4

在这关联作者“fragos”写道:

不幸的是,如果您在 nautilus 中打开该文件夹,.desktop 文件将会出现,其中包含文件中指定的图标以及文件中调出的文件名。

当他说“文件名在内部调用”时,他的意思是显示的文件名是从内部获取的。我会说“当设置可执行位时,文件名在内部调用”。他可能是对的,这很不幸。奇怪的是,我有一些设置了执行位,而有些没有。那些没有设置执行位的并不是不幸的原因,但我不知道为什么我很幸运。当设置位时,也许可以将其视为怪癖或错误。

相关内容