Мне интересно узнать больше о моей системе. Запустил, например, приложение GUI "Печать". Красивое блестящее имя в заголовке.
В /usr/bin нет файла «printing».
Есть ли какой-нибудь трюк, чтобы отображать настоящее имя приложения в файловой системе вместо «printing», например «printgui»?
решение1
Обычно приложения с графическим интерфейсом запускаются через «лаунчеры», т.е..рабочий столфайлы. Вы видите «Печать» в своих меню вместо настоящего имени, потому что это «общее имя» приложения (подробности в ссылке, которую я разместил). В зависимости от того, какой DE вы используете, вы можете щелкнуть правой кнопкой мыши по пункту меню и выбрать Edit
или , Properties
что позволит вам увидеть путь к исполняемому файлу, а иногда и настоящее имя этого приложения. Это невозможно в DE, например Gnome 3, поэтому вот решение, которое должно работать независимо от вашего DE.
.desktop
файлы расположены в /usr/share/applications
так просто grep
-ing дляGenericName=Печатьнеобходимо указать хотя бы один лаунчер, содержащий эту строку.
Например, у меня в системе нет "Печать", но есть "Текстовый редактор". Я хочу узнать настоящее имя приложения/исполняемого файла, поэтому я запускаю:
grep "GenericName=Text Editor" /usr/share/applications/*
что выводит:
/usr/share/applications/gedit.desktop:GenericName=Text Editor
Итак, "запуск" для "Text Editor" — это /usr/share/applications/gedit.desktop
. Теперь, чтобы узнать настоящее имя и исполняемый файл для "Text Editor", мне нужно выполнить grep значения двух ключей: Name
и Exec
:
grep -E '(^Name=|^Exec=)' /usr/share/applications/gedit.desktop
что выводит:
Name=gedit
Exec=gedit %U
Для получения полного пути к исполняемому файлу достаточно выполнить:
which gedit
и это возвращает:
/usr/bin/gedit
решение2
Я перенес ответ выше в сценарийexecCmdGnome3.shпоказано ниже. Я использую эту утилиту, чтобы узнать, как вызывать приложения из терминала, имя оболочки gnome которых мне известно.
#!/bin/bash
#
# Name: execCmdGnome3.sh
# Usage e.g.: sudo execCmdGnome3.sh "Document Viewer"
# Output: Found Launcher: "evince.desktop"
# Name=Document Viewer
# Exec=evince %U
launcher=`grep "$1" /usr/share/applications/* | sed s/.*applications.// | sed s/:.*// | uniq`
echo "Found Launcher: \"$launcher\""
grep -E '(^Name=|^Exec=)' "/usr/share/applications/$launcher"