Узнать имя приложения linux

Как узнать название программы по пункту меню?

Например, чтобы открыть Inkscape Vector Graphics Editor, я ввожу в терминале просто inkscape. Как мне узнать такие названия у других программ?

@alexanderbarakin, отнюдь. конечно это был ожидаемый ответ, но мало ли где-ещё можно было увидеть, может в синаптике, может ещё где. так что решил уточнить прежде чем тратить время на хороший ответ 😉

3 ответа 3

короткий ответ:

можете воспользоваться вот таким скриптом:

#!/bin/bash [ $# -eq 0 ] && < echo "usage: $0 search string"; exit 1; >d=$ h=$/.local/share> a=$:$: s=$ f="$@" find $ -type f -name \*.desktop 2>/dev/null | \ xargs grep -li "$" | xargs grep '^Exec' 

пример использования с примером результата (регистр искомой строки не важен):

$ bash файл-с-этим-скриптом inkscape vector Exec=inkscape %F Exec=inkscape 

длинный ответ с объяснениями:

то, что вы видите в меню, формируется из файлов с суффиксом .desktop , которые разыскиваются, согласно стандарту, в каталогах:

$XDG_DATA_DIRS/applications $XDG_DATA_HOME/applications 

если такие переменные окружения не определены, надо использовать:

XDG_DATA_DIRS=/usr/local/share/:/usr/share/ XDG_DATA_HOME=$HOME/.local/share/ 

двоеточием, как обычно принято в unix, разделяются каталоги при помещении нескольких в одну переменную.

т.е., надо найти файлы (чтобы не усложнять, исходим из того, что вышеупомянутые переменные не определены):

$ find /applications/ -type f -name \*.desktop 2>/dev/null 

затем выбрать из списка те файлы, в которых упоминается искомая строка (к примеру, Inkscape Vector ):

$ . | xargs grep -l 'Inkscape Vector' 

а затем вывести из отобранных файлов строки, начинающиеся с Exec (именно в этих строках написано, что именно следует запускать при щелчке по пункту меню):

после соединения в одну строку получилась вот такая длинная команда:

$ find /applications/ -type f -name \*.desktop 2>/dev/null | xargs grep -l 'Inkscape Vector' | xargs grep '^Exec' 

у меня в системе она выдала две строки:

Exec=inkscape %F Exec=inkscape 

из них, надеюсь, очевидно, что выполняться должна программа inkscape .

p.s. по локализованным именам (например: Редактор векторной графики ) тоже отлично ищет:

$ find /applications/ -type f -name \*.desktop 2>/dev/null | xargs grep -l 'Редактор векторной графики' | xargs grep '^Exec' Exec=inkscape %F Exec=inkscape 

я бы добавил, что в большинстве DE под правой кнопкой мыши в меню есть пункт «редактировать», который запускает гуёвый редактор этого самого .desktop -файла, где можно посмотреть команду без лишних телодвижений.

Читайте также:  Tor browser manjaro linux

@Fat-Zer, я не пользуюсь ни одним de, потому даже проверить не могу. потому лучше воздержусь. напишите свой вариант ответа, пожалуйста.

Как узнать название программы по пункту меню?

Это зависит от дистрибутива Linux. Но, по любому, у Вас есть некий аналог виндовозной кнопки «Пуск». Нажав на которую Вы и получаете меню. И далее, два варианта:

  1. В выпавшем меню где-то есть пункт, который называется как-то вроде «Редактировать главное меню»
  2. Щёлкнув правой клавишей мышки по этой кнопке, Вы увидите контекстное меню, в котором будет пункт «Редактировать меню»

Либо первым, либо вторым способом запускаете редактор меню, находите нужный Вам пункт, открываете его свойства и видите имя запускаемого модуля.

Кстати, вариант изучением ярлыков на рабочем столе (файлы *.desktop) не очень хорош, так как в меню есть куча пунктов для запуска программ, у которых нет никаких ярлыков.

все пункты в меню для запуска программ в конечном итоге представлены desktop-файлами. Это стандарт freedesktop.org и AFAIK на сегодня не осталось DE, которые этому не подчиняются.

Примерно как в Windows , все программы имеют свой исполяемый файл. В папке с установленной программой Inkscape Vector Graphics Editor лежит файлик inkscape , который и запускается. Запустить его можно просто указав полный путь до него.

Чтобы не задавать полные пути, можно поместить ссылки на исполняемые файлы в каталоги /bin и /sbin (а так же их варианты для пользоваетля /usr/bin и /usr/sbin ). Тогда можно вызывать файлы просто написав inkscape и Linux сам найдет исполняемый файл.

Можно самому прописывать пути в Bash, примерно как это делается в Windows через Path , только другим механизмом.

В любом случае когда вы ставите пакет, вы не знаете куда он помещает свое содержимое и как называются исполняемые файлы, поэтому лучше искать в документацие.

Источник

Как узнать имя и путь работающего приложения графического интерфейса в Linux?

Мне интересно узнать больше о моей системе. Запустил например приложение с графическим интерфейсом «Печать». Блестящее красивое имя в названии.

Читайте также:  Java control panel on linux

В каталоге /usr /bin нет файла «печать».

Есть ли какая-то хитрость, чтобы показать реальное имя приложения в файловой системе вместо «печати», например «printgui»?

2 ответа 2

Обычно приложения с графическим интерфейсом запускаются через «средства запуска», т.е. файлы .desktop . Вы видите «Печать» в своих меню вместо настоящего имени, потому что это «общее имя» приложения (подробности в ссылке, которую я разместил). В зависимости от того, какую DE вы используете, вы можете щелкнуть правой кнопкой мыши на пункте меню и выбрать « Edit или « Properties которые позволят вам увидеть путь к исполняемому файлу и иногда реальное имя для этого приложения. Это невозможно в DE, подобном Gnome 3, так что вот решение, которое должно работать независимо от вашего DE.

Файлы .desktop находятся в /usr/share/applications поэтому просто grep -ing для GenericName = Printing должен указать хотя бы один модуль запуска, содержащий эту строку.

Например, у меня нет «Печать» в моей системе, но у меня есть «Текстовый редактор». Я хочу знать настоящее имя приложения / исполняемого файла, поэтому я запускаю:

grep "GenericName=Text Editor" /usr/share/applications/* 
/usr/share/applications/gedit.desktop:GenericName=Text Editor 

Таким образом, «панель запуска» для «Текстового редактора» — это /usr/share/applications/gedit.desktop . Теперь, чтобы узнать настоящее имя и исполняемый файл для «Текстового редактора», мне нужно ввести значение двух ключей: Name и Exec :

grep -E '(^Name=|^Exec=)' /usr/share/applications/gedit.desktop 

Для полного пути исполняемого файла это только вопрос или выполнение:

Источник

How do I search for a process by name without using grep?

OP just wants a shorter command I’d guess. If there would be a thing like ps -n that would answer his need. ps -n firefox is a bit shorter than ps | grep firefox . ps can already filter on pid or processes for a user id, so it’s a reasonable question to filter on process name.

8 Answers 8

The pgrep command, and its sibling pkill , exists precisely for this purpose:

  • pgrep firefox will list all processes whose commands match firefox
  • pgrep -f firefox will list all processes whose entire command lines match firefox
  • pgrep -x firefox will list all processes whose commands exactly match firefox
  • . and so on.
Читайте также:  Форматирование перед установкой линукс

And naturally, pgrep will exclude itself from the match, so none of the grep rituals associated with ps | grep are needed.

The other set of tools for this are the pidof and killall commands. These aren’t as flexible as pgrep and pkill .

Useful if you have a long command name and/or command line args is pgrep -f foo which uses the full process name to match foo

 -C cmdlist Select by command name. This selects the processes whose executable name is given in cmdlist. -f Do full-format listing. This option can be combined with many other UNIX-style options to add additional columns. It also causes the command arguments to be printed. When used with -L, the NLWP (number of threads) and LWP (thread ID) columns will be added. See the c option, the format keyword args, and the format keyword comm. 

This is the best answer but unfortunately doesn’t work on OSX. The BSD ps -C flag behaves completely differently — «Change the way the CPU percentage is calculated»

You will get all the processes with names

exmple: 1747 568 568 ? 00:00:00 colord 1833 1832 1832 ? 00:00:00 gnome-keyring-d 2263 568 568 ? 00:00:00 udisksd 2311 2311 2311 ? 00:00:00 cupsd 2315 2315 2311 ? 00:00:00 dbus 

Redirect or so copy the output to a file and then open nano , press Ctrl + W and you can search for the name you want.

top allows you to search for string when you hit uppercase L ; the process will be highlighted, and use up and down arrow keys to scroll through list of processes. Similarly, htop command allows highlighting a particular process when you hit / . And \ will filter all the processes with a particular string in the name.

For those who like awk, here’s an awk oneliner: ps -eF | awk ‘/process-name/ ‘ . With ps -eF process name is always in 11th column. Alternatively if you do ps -eF | awk » | sort you get a sorted list of processes names, sorted alphabetically. Pipe it into less command just to view the long list of files easier.

Источник

Оцените статью
Adblock
detector