如何列出已安装的软件包(按用户)并附上简短说明?
当我搜索要安装的软件包时:pacman -Ss zsh
,我得到以下结果:
extra/zsh 5.7.1-1 [installed] A very advanced and programmable command interpreter (shell) for UNIX
我想使用类似的方法来获得相同的结果pacman -Qe
。
答案1
这些对我来说工作很快
这将提供 pacman -Qe 结果的完整信息。它对 pacman -Qe 输出的每一行执行 pacman -Qi
for line in "$(pacman -Qqe)"; do pacman -Qi $(echo "$line"); done
这将生成与你所做的循环相同的输出,但不会在每一行上进行 pacman 搜索。使用管道和 perl 格式化上述命令的输出
for line in "$(pacman -Qqe)"; do pacman -Qi $(echo "$line") ; done | perl -pe 's/ +/ /gm' | perl -pe 's/^(Groups +: )(.*)/$1($2)/gm' | perl -0777 -pe 's/^Name : (.*)\nVersion :(.*)\nDescription : ((?!None).*)?(?:.|\n)*?Groups :((?! \(None\)$)( )?.*)?(?:.|\n(?!Name))+/local\/$1$2$4\n $3/gm' | grep -A1 --color -P "^[^\s]+"
与上面相同,但没有在每个包名称开头添加“local/”
for line in "$(pacman -Qqe)"; do pacman -Qi $(echo "$line") ; done | perl -pe 's/ +/ /gm' | perl -pe 's/^(Groups +: )(.*)/$1($2)/gm' | perl -0777 -pe 's/^Name : (.*)\nVersion :(.*)\nDescription : ((?!None).*)?(?:.|\n)*?Groups :((?! \(None\)$)( )?.*)?(?:.|\n(?!Name))+/$1$2$4\n $3/gm' | grep -A1 --color -P "^[^\s]+"