从命令行浏览 Ubuntu 应用程序

从命令行浏览 Ubuntu 应用程序

我可以在 Gnome-Software 中浏览 Ubuntu 软件。而且它们分类得很好。我正在寻找它的 CLI 版本。也就是说,我想从终端浏览应用程序,在那里我可以列出特定类别下的所有应用程序(比如游戏)。

在此处输入图片描述

我为什么要寻找这个?

如果我可以从终端浏览应用程序,则可以使用诸如等工具高度定制搜索grep结果awk......

答案1

已经存在一个命令apt-cache dumpavail,它将列出所有已启用存储库中的所有可用软件包。在后台,它实际上从存储在/var/lib/apt/lists/目录中的文件读取(我已经执行了strace该命令,这就是输出显示的内容)。我猜 Gnome Software 会解析这些文件并将其组织到类别中。

问题是实际数据中有以Package:软件包名称开头的行以及Section:它们所属的行,但Section:行的组织方式与 Gnome Software 中的并不完全相同。但是,使用一些命令行魔法,我们可以接近这样的效果。我建议使用一个函数

filter_sections()
{
  apt-cache dumpavail | \
  awk -v SEARCH="$@" '/^Package:/{ PKG=$0  }\
    /Section:/ && $0~SEARCH {printf PKG" "$0"\n"}'
}

利用该函数我们可以按部分列出所有包,例如:

$ filter_sections web | head                                                   
Package: apache2 Section: web
Package: awstats Section: web
Package: curl Section: web
Package: heat-api Section: web
Package: heat-api-cfn Section: web
Package: heat-api-cloudwatch Section: web
Package: heat-common Section: web
Package: heat-engine Section: web
Package: javascript-common Section: web
Package: libapache2-mod-apparmor Section: web

代码本身相当简单:我们将 的输出传递给apt-cache dumpavailawk每个包名称存储到变量中,如果该Section:行还包含我们匹配的字符串,我们将打印包名称和部分。

至于列出章节本身,也相当容易

apt-cache dumpavail | awk '/Section:/' | sort | uniq 

这种方法的另一个好处是,其中一些会提到Sections包属于哪个存储库,例如universe/pythonmultiverse/web。但是,该函数将搜索所有 和 其中 ,但如果需要,我们总是可以使用awk更多进行筛选

答案2

你可能正在寻找aptitude。如果你的系统中没有安装它,请继续打开终端并输入 sudo apt-get install aptitudesudo aptitude启动它。

如果您想使用 搜索和过滤结果grep,则可以使用sudo apt-cache searchsudo aptitude search

相关内容