Я должен запустить скрипт удара, который получит все файлы на рабочем столе, расположенные в определенном пункте меню (как аксессуары/утилиты или образование, и т.д.) и затем выполнять определенного из них. Какие терминальные команды я могу использовать, чтобы сделать это?
.desktop
файлы расположены под также /usr/share/applications/
(в масштабе всей системы) или ~/.local/share/applications
(на пользователя). Классификация сделана путем установки свойства “Categories” в файле, и это не может быть тем же самым как показано в меню, таким образом, сначала необходимо узнать корректное название категории. В моем меню существует категория под названием “Büro”, который является немецким термином для “Office”, и это содержит средство запуска для qpdfview
. Рассмотреть .desktop
строка “Категорий” файла я работаю:
$ grep Categories /usr/share/applications/qpdfview.desktop
Categories=Viewer;Office;
Это показывает эти две категории для программы, таким образом, в нее звонят “офис” в .desktop
файлы. Получить список каждого .desktop
файл категоризировал с “Office”, который я использую grep
снова, с -l
отметьте, чтобы только показать имена файлов без соответствий:
$ grep -l Categories.*Office /usr/share/applications/*
/usr/share/applications/evince.desktop
/usr/share/applications/evince-previewer.desktop
/usr/share/applications/gnucash.desktop
/usr/share/applications/libreoffice-base.desktop
/usr/share/applications/libreoffice-calc.desktop
/usr/share/applications/libreoffice-draw.desktop
/usr/share/applications/libreoffice-impress.desktop
/usr/share/applications/libreoffice-math.desktop
/usr/share/applications/libreoffice-startcenter.desktop
/usr/share/applications/libreoffice-writer.desktop
/usr/share/applications/qpdfview.desktop
Таким образом, это - наш список офисных программ, теперь для выполнения их я просто использовал бы xdg-open
, например:
xdg-open /usr/share/applications/qpdfview.desktop
Если xdg-open
не работает над Вашей системой, можно также просто извлечь команду запуска из файла и выполнить ее непосредственно, например:
exec $(grep -Po 'Exec=\K[^ ]*' /usr/share/applications/qpdfview.desktop)
Вы не предоставили информацию о том, как Вы или пользователь сценария должны выбрать программу для выполнения, таким образом, вот некоторые ссылки, которые могут помочь Вам с этим:
Сохранение имен файлов в массиве для легкой обработки в сценарии так легко:
options=("$(grep -l Categories.*Office /usr/share/applications/*)")