当我搜索软件包列表时,我通常使用
dpkg -l|grep string|cut -d" " -f3|xargs
libdouble-conversion3:amd64 libestr0:amd64 libeval-closure-perl libio-stringy-perl libunistring2:amd64 liburi-perl libustr-1.0-1:amd64 libwind0-heimdal:amd64 libxstring-perl php-mbstring php7.0-mbstring php7.4 -mbstring php8.2-mbstring
bash 中有没有更短的方法来获取此列表?
dpkg-query
-W
当使用而不是 .时,允许格式化输出-l
。例如
将列出以空格开头的所有二进制包
pyth
并用空格分隔它们,必要时还包含它们的体系结构。有关可能格式的更多详细信息,请参阅
man dpkg-query
.它可能不一定更短,但您可以基于它定义一个别名,因此只需使用 REGEX 查询。
如果您只想学习一种可以搜索软件包的工具,您可以考虑
aptitude
它的搜索语法非常通用,并且可以让您根据有关已安装软件包或未安装软件包的许多条件进行搜索。这里:
将搜索已安装的软件包(
~i
缩写为?installed
)且其名称与给定正则表达式(^pyth
缩写为~n^pyth
或?name(^pyth)
)匹配。-F %p
指定输出格式,这里%p
是包名。如果您想在一行上打印以空格分隔的列表,
xargs
( 的缩写xargs echo
)不是合适的工具。paste -sd ' ' -
代替使用。如果目的是将包列表传递给另一个命令:尽管:
也应该有效,因为包名称通常不以 / 开头
-
,也不包含空格、引号或反斜杠字符,如果xargs
没有-0
/ ,这将是一个问题-d
。如果命令是卸载/清除软件包,请注意您还可以执行以下操作:
另请注意,您可以在 TUI 中执行相同的搜索,
aptitude
方法是按l(l
模仿视图)并在其中输入搜索规范,最好是在平面列表视图中。然后,可以更轻松地查看这些包的详细信息并对这些包执行操作。aptitude
第一次在系统上运行时我做的第一件事是通过勾选更改“选项” -> “首选项”中的默认设置:这使得对一组过滤的包应用操作变得更容易。