Поиск предпочтительного приложения для данного расширения файла с помощью команд оболочки unix

StackOverflow https://stackoverflow.com/questions/1949531

Вопрос

этого может и не быть строго о программировании, но если я не найду готового решения, это может превратиться в задачу программирования: В 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 был почти именно тем, что я хотел, но он позволяет уродливым предупреждениям программы проникать в оболочку, что, по-видимому, исправлено выше.

Спасибо всем.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top