Поиск предпочтительного приложения для данного расширения файла с помощью команд оболочки unix
-
21-09-2019 - |
Вопрос
этого может и не быть строго о программировании, но если я не найду готового решения, это может превратиться в задачу программирования: В UNIX, каков метод командной строки для определения предпочтительного пользователем приложения для данного типа файла?
Моим идеальным решением здесь была бы команда, которая избавила бы меня от необходимости выполнять следующее:
okular foo.pdf
И позволил мне сделать что-то подобное, работая с моим набором предпочтительных приложений:
launch foo.pdf
Я не нашел ответа путем поиска, и подход "Сделай сам" не сработал бы, поскольку, хотя я уже некоторое время использую Linux, я понятия не имею о внутренних компонентах, которые управляют моими предпочтительными приложениями.
Решение
В unix как таковой это был бы тот, который пользователь использовал для его открытия, потому что на уровне операционной системы нет понятия предпочтительного приложения.
Однако все основные среды рабочего стола X определяют такое понятие, и тогда вам придется использовать их возможности:
gnome-open
в GNOME (да)exo-open
в XFCE [смотрите комментарии по ссылке gnome]xdg-open
может работать во многих средах (по общему мнению, работает в KDE) [смотрите Комментарии по ссылке gnome]- просто обычный
kfmclient exec
(илиkfmclient4 exec
) в KDE (я не смог найти ссылку наkde-open
как Роб Эйч предлагает, и у вас нет под рукой системы KDE, чтобы попробовать это)
Теперь Mac OS X предоставляет open
команда, которая работает как щелчок по файлу в finder (то есть запрашивает ОС ...)
Несколько исправлений благодаря эфемерный в комментариях.Я не буду обсуждать mailcap
, потому что я никогда не понимал этого и забыл о его существовании...
Другие советы
Ответ отличается в зависимости от используемой вами среды рабочего стола.Поскольку вы упомянули Okular, я собираюсь предположить, что вы используете KDE.Так что попробуй:
kde-open <file>
Для GNOME существует эквивалент:
gnome-open <file>
Чтобы ответить на этот вопрос самостоятельно, я определил простую функцию (bash), которая работает так, как я ожидаю:
function show {
xdg-open $1 &> NUL
}
xdg-open был почти именно тем, что я хотел, но он позволяет уродливым предупреждениям программы проникать в оболочку, что, по-видимому, исправлено выше.
Спасибо всем.