![如何确定已安装的 Debian 包提供的可调用命令?](https://linux22.com/image/1405943/%E5%A6%82%E4%BD%95%E7%A1%AE%E5%AE%9A%E5%B7%B2%E5%AE%89%E8%A3%85%E7%9A%84%20Debian%20%E5%8C%85%E6%8F%90%E4%BE%9B%E7%9A%84%E5%8F%AF%E8%B0%83%E7%94%A8%E5%91%BD%E4%BB%A4%EF%BC%9F.png)
我是一个相对较新的 Linux 用户,所以今天我遇到了一个问题。我从发行版的 apt 存储库安装了一个模拟器前端(“visualboyadvance-gtk”),但安装完成后,我无法弄清楚该程序的终端命令是什么。通常,终端命令和包名称非常接近,所以我以前从未遇到过这个问题。(在这种情况下,命令最终是“gvba”;与存储库中的包名称完全不同。)
所以,我的问题是:是否有一种快速简便的方法来确定我已安装的任何包的终端命令?我查看了该软件包的“apt-cache show”信息,但其中没有实际的终端命令。我猜一定有办法用 APT 或 dpkg 或类似的东西找到这类信息。
答案1
我通常会
dpkg -L packagename | grep -E '/s?bin/'
获取该包提供的所有内容的“可调用”列表。
规则很简单:按照Debian 政策(以及跳频)所有可由普通用户(非管理员)调用的程序必须将其二进制文件(或指向它们的链接,通常是符号)放在/bin
或/usr/bin
1下,以及系统管理员可调用的所有程序必须将它们的二进制文件(或指向它们的链接)放在/sbin
或/usr/sbin
1下。
任何本地程序(不是从软件包安装的,因此不属于“系统”的一部分)都必须将其可调用二进制文件放在/usr/local/bin
或下/usr/local/sbin
- 这些地方是“你的”,并且保证没有从官方存储库安装的软件包会将二进制文件放置/链接在那里。
如果你跑
echo $PATH
在普通用户的终端中,您将看到/bin
和列出/usr/bin
的/usr/local/bin
目录 — shell 会在此查找您要求其运行的非内置命令。超级用户也会sbin
列出这些目录的“ ”版本。
最后还有一点小提示:您无法仅通过查看软件包提供的程序列表来确定哪些是命令行(“可在终端中调用”)或 GUI(需要连接 X 服务器),因为这两种程序都位于同一目录层次结构中。另一方面,那些希望集成到桌面环境中的 GUI 应用程序(例如 GNOME、KDE、XFCE、LXDE 等)通常会提供所谓的“桌面文件”(以扩展名结尾.desktop
),这些文件为其程序提供了描述性标题、其用途的描述以及应用程序的调用方式。这些文件由桌面环境扫描并显示在其“应用程序菜单”中(或以类似的方式使用)。因此,如果您正在寻找这种程序,您可能会看到forgrep
的输出。dpkg -L
.desktop
答案2
您遇到的问题是,软件包可能包含许多命令,或者(如库的情况)根本不包含任何命令。
您可以使用 查看包的内容dpkg -L packagename
。包中安装的所有内容/usr/bin
都可从命令行运行,尽管并非所有命令都会给出非常合理的结果。
您还可以尝试搜索手册页——man -k visualboyadvance
可能会给您提供一些有用的东西。