
Wie liste ich installierte Pakete (nach Benutzer) mit einer kurzen Beschreibung auf?
Wenn ich nach zu installierenden Paketen suche: pacman -Ss zsh
, erhalte ich das folgende Ergebnis:
extra/zsh 5.7.1-1 [installed] A very advanced and programmable command interpreter (shell) for UNIX
Ich möchte dasselbe Ergebnis mit etwas wie erhalten pacman -Qe
.
Antwort1
Diese funktionieren bei mir schnell
Dies gibt vollständige Informationen zu den Ergebnissen von pacman -Qe. Es führt pacman -Qi für jede Zeile der Ausgabe von pacman -Qe aus.
for line in "$(pacman -Qqe)"; do pacman -Qi $(echo "$line"); done
Dies erzeugt die gleiche Ausgabe wie die von Ihnen erstellte Schleife, jedoch ohne eine Pacman-Suche in jeder Zeile durchzuführen. Verwendet Pipes und Perl, um die Ausgabe des obigen Befehls zu formatieren
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]+"
Wie oben, jedoch wurde am Anfang jedes Paketnamens nicht „local/“ hinzugefügt.
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]+"
Antwort2
Dieser Befehl gibt die Beschreibung in der gleichen Zeile aus.
expac -H M '%-20n\t%10d' $(pacman -Qe)
Es besteht aus einigen gefundenen BefehlenHierim Archwiki.