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

Это дает пользователю меню после воспроизведения файла:

TMPDIR=${TMPDIR:-/tmp}

for name in./*.mp3; do
    test -f "$name" || continue

    printf 'Playing "%s"...\n' "$name"
    mplayer "$name"

    select ch in "Move $name to $TMPDIR" "Remove $name"; do
        case "$REPLY" in
            1)  mv "$name" "$TMPDIR" ;;
            2)  rm "$name" ;;
            *)  echo 'Invalid choice' >&2
                continue ;;
        esac
        break
    done
done

Этот скрипт не требует bash, подойдет любой shшелл.

3
18.12.2019, 14:34
1 ответ

Приложения, которые вы можете запускать из среды рабочего стола, описываются.desktopфайлами , которые хранятся в /usr/share/applicationsи ~/.local/share/applications(, строго говоря, соответствующих каталогах XDG , но те являются настройками по умолчанию ). Имея имя приложения, как показывает среда вашего рабочего стола, вы можете найти его в этих файлах и найти соответствующую строку Exec.

Для этого можно использовать редакторы меню с графическим интерфейсом, такие как Alacarte GNOME или MenuLibre , или выполнить поиск в командной строке.

Alacarte («Главное меню» в GNOME )показывает все доступные приложения, а свойства каждой записи показывают соответствующую команду:

Alacarte screenshot showing the launcher properties for “Users”

В окне терминала это приложение «Пользователи» можно найти с помощью

grep -l Name.\*=Users {/usr,~/.local}/share/applications/*.desktop |
xargs -r grep Exec=

Это показывает

Exec=gnome-control-center user-accounts

и правда,

gnome-control-center user-accounts

в командной строке открывает соответствующую панель.

Для браузера БД вы должны запустить

grep -l "Name.*=DB Browser" {/usr,~/.local}/share/applications/*.desktop |
xargs -r grep Exec=

В некоторых случаях строка Execможет иметь дополнительные аргументы, например .%f; это заполнители для аргументов, таких как файлы.

5
27.01.2020, 21:17

Теги

Похожие вопросы