我经常使用 bash,我正在编写一个脚本,用于帮助某人卸载软件包,当软件包不在系统中时,会显示错误消息,我试图弄清楚如何显示所有已安装软件包的列表,就像apt list --installed
does 一样,但不显示所有信息(例如:without /jammy,now 1.4.8+dfsg-3build1 amd64 [installed,automatic]
),而只显示软件包名称。下面是我尝试显示软件包而不显示代码中的额外信息的命令:
apt list --installed | grep -oP '/jammy \K.*' | grep -o "$removepackagename" | awk -F'|' 'NR==1 {print;x=$2} NR>1 {if ($2 != x) {print;x=$2}}'
我希望上面的命令能够显示已安装的软件包列表,而无需额外的信息。此外,在上面的命令中,我尝试利用我对 grep 的了解(几乎为零)来删除额外的信息,命令的这一部分是:
grep -oP '/jammy \K.*'
我还希望输出类似于:
apt
aptitude
(some other packages on new lines each)
(我也知道这不是它实际输出的内容,这只是一个例子。)
答案1
仅列出所有已安装软件包的名称:
apt list --installed | cut -d'/' -f1 | uniq
一次仅在一个屏幕上列出所有已安装软件包的名称,以便更轻松地滚动查看结果:
apt list --installed | cut -d'/' -f1 | uniq | less
将所有已安装软件包的名称列表保存在名为installed-packages.txt的文件中
apt list --installed | cut -d'/' -f1 | uniq > installed-packages.txt