如何找到已安装包的程序名称?

如何找到已安装包的程序名称?

当我使用 安装了一个包后apt,有没有办法找出我可以通过哪些命令来运行已安装的程序?

例如,该包httpcode不是以 的形式提供的httpcode,并且包描述 ( apt show httpcode) 未说明如何运行它。我怎么才能发现它是通过hc命令行运行的?

我发现了两种稍微有点棘手的解决方法:

  1. 假设程序默认安装在中usr/bin,我运行ls -ltc | head -n 10去那里查找最近接触过的文件,结果确实找到了hc

  2. 与1类似,dpkg -L httpcode返回安装包创建的文件列表,其中还列出了/usr/bin/hc

有没有更好的办法来解决这个问题,而不依赖于程序运行的直觉可能存储在磁盘上?

我还发现,man httpcode即使我使用包名称作为参数来调用它,它也会打开程序的手册页。这总是有效吗(如果程序提供了手册页)?

答案1

文件(可执行文件、手册页和其他内容)的位置应该符合文件系统层次标准作为一项规则。

我个人使用以下四种方法之一来解决这个问题:

  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属于这个包。

  2. 列出所有手册页:

    $ dpkg -L httpcode | grep "/man/"
    /usr/share/man/man1
    /usr/share/man/man1/hc.1.gz
    

    所以我们可以看到我们可以使用man hc

  3. 对于具有 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桌面入门规格

  4. 对于未安装的软件包,可以访问https://packages.ubuntu.com并使用搜索包目录这里(对于所有版本精选版本),然后点击文件列表表格右栏中的链接:

    文件列表链接

    并将获得文件列表:

    httpcode 包的文件列表

    此列表可以手动解释,也可以使用浏览器中的搜索栏进行解释。

答案2

如果您可以在 Linux 中相当于开始菜单的菜单中右键单击它来为其创建桌面快捷方式,那么您就可以访问该快捷方式的属性。

然后只需使用快捷方式使用的命令的结尾,例如我刚刚发现了 Google Chrome(google-chrome-stable)。

BAM 就是这样。通过终端和/或启动器运行任何内容的命令

相关内容