我有兴趣进一步了解我的系统。例如,启动 GUI 应用程序“打印”。标题中有一个闪亮的好听的名字。
/usr/bin 中没有文件“printing”。
是否有一些技巧可以在文件系统中显示应用程序的真实名称而不是“打印”,例如“printinggui”?
答案1
通常 GUI 应用程序是通过“启动器”启动的,即。桌面文件。您在菜单中看到的是“打印”,而不是真实名称,因为这是应用程序的“通用名称”(详细信息请参阅我发布的链接)。根据您使用的 DE,您可能能够右键单击菜单项并选择Edit
或,Properties
这将允许您查看可执行路径,有时还可以看到该应用程序的真实名称。这在 Gnome 3 等 DE 中是不可能的,因此这里有一个无论您的 DE 是什么都应该有效的解决方案。
.desktop
文件位于/usr/share/applications
如此简单的grep
-ing通用名称=打印应该列出至少一个包含该字符串的启动器。
例如,我的系统上没有“打印”,但有“文本编辑器”。我想知道应用程序/可执行文件的真实名称,因此我运行:
grep "GenericName=Text Editor" /usr/share/applications/*
输出:
/usr/share/applications/gedit.desktop:GenericName=Text Editor
因此,“文本编辑器”的“启动器”是/usr/share/applications/gedit.desktop
。现在,为了知道“文本编辑器”的真实名称和可执行文件,我必须 grep 两个键的值:Name
和Exec
:
grep -E '(^Name=|^Exec=)' /usr/share/applications/gedit.desktop
输出:
Name=gedit
Exec=gedit %U
对于可执行文件的完整路径,这只是一个运行的问题:
which gedit
返回结果:
/usr/bin/gedit
答案2
我将上面的答案转置到脚本中执行命令Gnome3.sh如下所示。我使用此实用程序来找出如何从我知道其 gnome shell 名称的终端调用应用程序。
#!/bin/bash
#
# Name: execCmdGnome3.sh
# Usage e.g.: sudo execCmdGnome3.sh "Document Viewer"
# Output: Found Launcher: "evince.desktop"
# Name=Document Viewer
# Exec=evince %U
launcher=`grep "$1" /usr/share/applications/* | sed s/.*applications.// | sed s/:.*// | uniq`
echo "Found Launcher: \"$launcher\""
grep -E '(^Name=|^Exec=)' "/usr/share/applications/$launcher"