![为什么这个文件名在 Nautilus 中被截断了?](https://linux22.com/image/996199/%E4%B8%BA%E4%BB%80%E4%B9%88%E8%BF%99%E4%B8%AA%E6%96%87%E4%BB%B6%E5%90%8D%E5%9C%A8%20Nautilus%20%E4%B8%AD%E8%A2%AB%E6%88%AA%E6%96%AD%E4%BA%86%EF%BC%9F.png)
答案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.desktop
smartgit.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 文件将会出现,其中包含文件中指定的图标以及文件中调出的文件名。
当他说“文件名在内部调用”时,他的意思是显示的文件名是从内部获取的。我会说“当设置可执行位时,文件名在内部调用”。他可能是对的,这很不幸。奇怪的是,我有一些设置了执行位,而有些没有。那些没有设置执行位的并不是不幸的原因,但我不知道为什么我很幸运。当设置位时,也许可以将其视为怪癖或错误。