
Как составить список установленных пакетов (по пользователю) с кратким описанием?
При поиске пакетов для установки: 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 -Qi на каждой строке вывода pacman -Qe
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]+"
решение2
Эта команда дает описание в той же строке.
expac -H M '%-20n\t%10d' $(pacman -Qe)
Он создан из некоторых найденных команд.здесьв архвики.