Скрипт сохранит в файл nameinstpkgs+execs.txt имена всех установленных в системе пакетов и их исполняемые файлы
А можно одни графические?
пример
Name : LibreOffice-common
/usr/bin/libreoffice5.2
Name : LibreOffice-integrated
/usr/bin/lobase
/usr/bin/localc
/usr/bin/lodraw
/usr/bin/loffice
/usr/bin/loimpress
/usr/bin/lomath
/usr/bin/loqstart
/usr/bin/lowriter
С таким форматом вывода можно.
И даже в двух вариантах:
Вариант Irpm -qf --qf '%{name}\n' $(find /usr/share/applications -name \*.desktop)|sort -fu| \
while read line; \
do STR=`rpm -ql $line|grep 'bin/'|wc -m`; \
if [ "$STR" != 0 ]; \
then echo -e '\n'; rpm -qi $line|grep '^Name'|awk '{print $1,$2,$3}'; rpm -ql $line|grep 'bin/'; \
fi; \
done \
> guiappspkgs-execs-outformat1.txt
$ tail -n 25 guiappspkgs-execs-outformat1.txt
/usr/bin/xfce4-terminal
Name : xfdashboard
/usr/bin/xfdashboard
/usr/bin/xfdashboard-settings
Name : xfdesktop
/usr/bin/xfdesktop
/usr/bin/xfdesktop-settings
Name : xfwm4
/usr/bin/xfwm4
/usr/bin/xfwm4-settings
/usr/bin/xfwm4-tweaks-settings
/usr/bin/xfwm4-workspace-settings
Name : xterm
/usr/bin/koi8rxterm
/usr/bin/resize
/usr/bin/uxterm
/usr/bin/xterm
Вариант IIfind /usr/share/applications -name \*.desktop|sort -fu| \
while read line; \
do PKG=`rpm -qf --qf '%{NAME}\n' $line`; \
CMD=`grep ^Exec $line|sed -n 's/^Exec=//p'`; \
echo -e '\n'; rpm -qi $PKG|grep '^Name'|awk '{print $1,$2,$3}'; echo $CMD
done \
> guiappspkgs-execs-outformat2.txt
$ tail -n 25 guiappspkgs-execs-outformat2.txt
xfwm4-settings
Name : xfwm4
xfwm4-tweaks-settings
Name : xfwm4
xfwm4-workspace-settings
Name : orage
orage -p
Name : xfdashboard
/usr/bin/xfdashboard
Name : xfdashboard
/usr/bin/xfdashboard-settings
Name : xterm
xterm -name XTerm
Первый вариант выше, на основе анализа *.desktop-файлов и их содержимого, а также пакетов в которых они лежат, выводит имя пакета и все исполняемые файлы в пакете.
Второй вариант, как и предлагали Skull с Русланом, с таким же форматом вывода на основе анализа содержимого *.desktop-файлов, - выводит имя пакета и строку-параметр для Exec=.
Если вам эти варианты подходят, их можно скопировать в советы с краткими комментариями.
Справиться с форматом вывода который предлагали парни, мне не удалось. Это был какой-то финиш...
Во-первых такой формат вывода абсолютно негуманный и при больших объёмах текста снесёт башню
find /usr/share/applications -name \*.desktop|sort -fu| \
while read line; \
do PKG=`rpm -qf --qf '%{NAME}\n' $line`; \
CMD=`grep ^Exec $line|sed -n 's/^Exec=//p'`; \
echo -e "$PKG\t\t\t\t$CMD"; \
done
alterator-standalone acc
mozilla-plugin-adobe-flash xdg-open http://www.adobe.com/legal/licenses-terms.html
arandr arandr
atril-gtk atril %U
bluefish-common bluefish %F
libexo exo-open --launch FileManager %u
libexo exo-open --launch MailReader %u
libexo exo-preferred-applications
libexo exo-open --launch TerminalEmulator
libexo exo-open --launch WebBrowser %u
firefox firefox %u
mozilla-plugin-adobe-flash flash-player-properties
gimp gimp-2.8 %U
libgnomekbd gkbd-keyboard-display
libgksu gksu-properties
orage globaltime
mplayer gmplayer %U
gnome-screensaver gnome-screensaver
gparted /usr/bin/gparted %f
htop htop
imagewriter /usr/bin/xdg-su -c /usr/bin/imagewriter %f
branding-altlinux-sisyphus-indexhtml xdg-open /usr/share/doc/indexhtml/index.html
kompozer kompozer %u
...
А во-вторых:
После 12-ти часов сражений, заставить этого дебила sed, приклеить стринг к стрингу табличным выводом и сразу на стандартный вывод без использования промежуточного файла как ненужной сущности, мне так и не удалось.
Как только sed натыкается на слеш, он начинает сыпать ошибками интерпретируя каждый байт стринга, вместо того чтобы взять стринг из переменной и приклеить его к концу предыдушего стринга, построчно создавая табличный вывод, чтобы улучшить восприятие больших объёмов текста и не ломать глаза об монитор:
find /usr/share/applications -name \*.desktop|sort -fu| \
while read line; \
do PKG=`rpm -qf --qf '%{NAME}\n' $line`; \
CMD=`grep ^Exec $line|sed -n 's/^Exec=//p'`; \
echo $PKG | sed -r ':l;/.{30}/q;s/.*/& /;bl'| sed -n 's/$/'"$CMD"'/p'; \
done
alterator-standalone acc
sed: -e выражение #1, символ 20: неизвестный модификатор к `s'
arandr arandr
atril-gtk atril %U
bluefish-common bluefish %F
libexo exo-open --launch FileManager %u
libexo exo-open --launch MailReader %u
libexo exo-preferred-applications
libexo exo-open --launch TerminalEmulator
libexo exo-open --launch WebBrowser %u
firefox firefox %u
mozilla-plugin-adobe-flash flash-player-properties
gimp gimp-2.8 %U
libgnomekbd gkbd-keyboard-display
libgksu gksu-properties
orage globaltime
mplayer gmplayer %U
gnome-screensaver gnome-screensaver
sed: -e выражение #1, символ 7: неизвестный модификатор к `s'
htop htop
sed: -e выражение #1, символ 6: неизвестный модификатор к `s'
sed: -e выражение #1, символ 15: неизвестный модификатор к `s'
kompozer kompozer %u
...
Приветствуется любой работающий код способный построчно отправить таблицу в формате пакет-команда на стандартный вывод.
ЗЫж
В двух последних скриптах выше, имя пакета обрезано с пакет-версия-сборка до пакет из практических соображений.
Некоторые строки имя_пакета--exec-команда, длинные, и на ноутбуках с разрешением 1024x768 (1024x600) текст будет резаться на экране.
Но если вам нужно полное имя пакета, уберите из скриптов
--qf '%{NAME}\n'