从命令行浏览Ubuntu应用程序

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

在此处输入图像描述

我为什么要找这个?

如果我可以从终端浏览应用程序,搜索结果可以使用像grepawk等工具高度自定义…

已经存在命令apt-cache dumpavail ,它将列出所有已启用存储库中的所有可用包。 在幕后,它实际上是从存储在/var/lib/apt/lists/目录中的文件中读取的(我已经完成了命令的操作,这就是输出显示的内容)。 我的猜测是,Gnome Software会解析那些相同的文件并将它们组织成类别。

问题是实际数据的行以Package:开头Package:对于包名称和Section:它们属于它们,但是Section: lines的组织结构与Gnome Software中的不完全相同。 但是,通过一点命令​​行魔术,我们可以接近这样的东西。 我建议的是一个function

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

使用该function,我们可以按部分列出所有包,例如:

 $ 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 dumpavail的输出apt-cache dumpavailawk ,它将每个包名存储到varialbe中,如果Section:行还包含我们匹配的字符串,我们将打印包名和这部分。

至于列出这些部分本身,它也相当容易

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

这种方法的好处还在于某些Sections提到了包所属的存储库,例如universe/pythonmultiverse/web 。 但是,该函数将搜索所有这些函数,但如果需要,我们总是可以使用awk过滤

你可能正在寻找aptitude 。 如果您的系统中未安装此function,请继续打开终端并键入sudo apt-get install aptitude然后输入sudo aptitude启动它。

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