当我使用 安装了一个包后apt
,有没有办法找出我可以通过哪些命令来运行已安装的程序?
例如,该包httpcode
不是以 的形式提供的httpcode
,并且包描述 ( apt show httpcode
) 未说明如何运行它。我怎么才能发现它是通过hc
命令行运行的?
我发现了两种稍微有点棘手的解决方法:
假设程序默认安装在中
usr/bin
,我运行ls -ltc | head -n 10
去那里查找最近接触过的文件,结果确实找到了hc
。与1类似,
dpkg -L httpcode
返回安装包创建的文件列表,其中还列出了/usr/bin/hc
。
有没有更好的办法来解决这个问题,而不依赖于程序运行的直觉可能存储在磁盘上?
我还发现,man httpcode
即使我使用包名称作为参数来调用它,它也会打开程序的手册页。这总是有效吗(如果程序提供了手册页)?
答案1
文件(可执行文件、手册页和其他内容)的位置应该符合文件系统层次标准作为一项规则。
我个人使用以下四种方法之一来解决这个问题:
已知可执行文件放在
$PATH
环境变量中声明的目录中:$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
因此,可以使用以下命令列出所有包文件
dpkg --list
(参见man dpkg
(详情)并在/bin
、/sbin
、/usr/bin
、目录/usr/sbin
中查找文件/usr/games
。因此我们可以使用以下命令:$ dpkg -L httpcode | grep -E "/bin/|/sbin/|/usr/games/" /usr/bin/hc
所以我们可以看到它
/usr/bin/hc
属于这个包。列出所有手册页:
$ dpkg -L httpcode | grep "/man/" /usr/share/man/man1 /usr/share/man/man1/hc.1.gz
所以我们可以看到我们可以使用
man hc
。对于具有 GUI 的应用程序,我运行文件搜索
*.desktop
。$ dpkg -L httpcode | grep ".desktop" $
在这种特殊情况下,它不会返回任何内容。
对于一些复杂的专有(或包装不良)的东西,这种方法会转换为读取文件
Exec
中的变量*.desktop
- 这里 Telegram 就是一个例子:$ dpkg -L telegram | grep ".desktop" /usr/share/applications/telegram.desktop $ grep Exec $(dpkg -L telegram | grep ".desktop") Exec=/opt/telegram/Telegram -- %u
关于
Exec
看桌面入门规格。对于未安装的软件包,可以访问https://packages.ubuntu.com并使用搜索包目录这里(对于所有版本或精选版本),然后点击文件列表表格右栏中的链接:
并将获得文件列表:
此列表可以手动解释,也可以使用浏览器中的搜索栏进行解释。
答案2
如果您可以在 Linux 中相当于开始菜单的菜单中右键单击它来为其创建桌面快捷方式,那么您就可以访问该快捷方式的属性。
然后只需使用快捷方式使用的命令的结尾,例如我刚刚发现了 Google Chrome(google-chrome-stable)。
BAM 就是这样。通过终端和/或启动器运行任何内容的命令