1 原理
Linux 中的每个命令都对应一个可执行文件,而主菜单中的每个图标,大多对应于 /usr/share/applications/ 下的一个 .desktop 文件。
那么,只要我们能确定某个可执行文件,或某个 .desktop 隶属于哪个软件包,就可以顺藤摸瓜,知道这个命令(或菜单中的某个图标)隶属于哪个软件包了。
2 准备工作
首先需要安装 apt-file,它可以用来查询某个软件隶属于哪个软件包。
sudo apt install apt-file
安装好后,要刷新一下 apt-file 的缓存数据库,以便进行查询:
sudo apt-file update
3 查询
3.1 查询某条命令
这里我们以查询 find 命令隶属于哪个软件包为例。
(1) 使用 which [要查询的命令],查询该命令对应的可执行文件的路径。比如:
which find
可得到如下输出:
/usr/bin/find
(2) 使用 apt-file [可执行文件路径],查询该可执行文件隶属于哪个软件包。比如,
apt-file search /usr/bin/find
提示
apt-file仅执行查询操作时,无需使用 Root 权限。
可得到如下输出:
...
findent: /usr/bin/findent
findimagedupes: /usr/bin/findimagedupes
findutils: /usr/bin/find
fontforge-extras: /usr/bin/findtable
...
注意
apt-file只能进行模糊搜索,因此搜索结果可能会很多。
可以看到,其中有如下结果:
findutils: /usr/bin/find
这意味着,find 命令来自 findutils 这个软件包。
3.2 查询主菜单中的图标
打开文件管理器,进入
/usr/share/applications
可以看到,这里有很多启动器。
然后,打开终端,输入如下内容(
但不要按 Enter)
apt-file search[空格]
再将文件管理器中,要查询的图标拖动到终端的光标后,最后按 Enter,即可看到查询结果。
比如,我将 “Debian 参考手册”[1] 这个图标拖进来,
终端中的命令变成:
执行后,得到的输出是
debian-reference-common: /usr/share/applications/debian-reference-common.desktop
表明这个图标是软件包 debian-reference-common 创建的。
对应的路径是
/usr/share/applications/debian-reference-common.desktop↩︎

