我在 RedHat Linux 上工作,当我使用ll
或ls -l
在桌面上从终端读取文件时,我看到的名称与文件管理器中的名称不同。假设桌面上的文件名是John
,但我在终端中看到它是vc-john.desktop
.我可以在这里寻求帮助吗?
答案1
您所观察到的是许多 Linux 发行版(包括 Red Hat)中的常见行为。图形文件管理器和终端之间的文件名差异是由于桌面环境处理桌面条目(.desktop 文件)的方式造成的。
这是一个解释:
桌面文件(*.desktop):这些是 Linux 中的特殊文件,充当应用程序的快捷方式,类似于 Windows 中的快捷方式。它们是纯文本文件,但具有 .desktop 扩展名。对于系统范围的应用程序,这些文件通常驻留在 /usr/share/applications/ 中;对于特定于用户的应用程序,这些文件通常驻留在 ~/.local/share/applications/ 中。它们也可以放置在桌面上以便快速访问。
命名约定:在文件管理器(如 GNOME 的 Nautilus 或 KDE 的 Dolphin)中,这些文件以 .desktop 文件中指定的名称显示,而不是实际的文件名。例如,名为 vc-john.desktop 的文件可能包含类似 Name=John 的行。文件管理器根据文件中的“名称”属性显示“John”。
终端视图(ll 或 ls -l):当您在终端中使用 ls -l 或 ll 等命令时,您会看到文件系统上的实际文件名,而不是 .desktop 文件中指定的名称。这就是为什么您会看到 vc-john.desktop 而不是“John”。
修改显示名称:如果要更改名称在文件管理器中的显示方式,可以编辑 .desktop 文件并修改“名称”字段。但是,这不会更改实际的文件名,即您在终端中看到的文件名。
为什么有前缀?:前缀(如您的例子中的 vc- )通常用于组织或命名约定目的,特别是当桌面文件是由特定软件或脚本生成时。
总之,文件管理器显示从 .desktop 文件内容中提取的用户友好名称,而终端显示文件系统上的实际文件名。此行为是设计使然,以使桌面更加用户友好,并不表示您的系统有任何问题。
答案2
您在终端中看到的名称始终是真实的。据推测,您的文件管理器隐藏了扩展名。然后,由于这是一个.desktop
文件,它可能包含自己的显示名称,这就是将要显示的名称。例如,如果我创建一个名为Desktop/vc-john.desktop
以下内容的文件:
$ cat Desktop/vc-john.desktop
[Desktop Entry]
Name=John
Exec=true
Comment=
Terminal=false
PrefersNonDefaultGPU=false
Icon=cinnamon-panel-launcher
Type=Application
然后,由于Name=John
,文件管理器会将其显示为 ,John
因为它了解.desktop
文件,但不了解文件的 shell(终端)会将其显示为vc-john.desktop
。