Поиск предпочтительного приложения для данного расширения файла с помощью команд оболочки Unix - PullRequest
2 голосов
/ 23 декабря 2009

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

Моим идеальным решением здесь была бы команда, которая помешала мне сделать следующее:

okular foo.pdf

И позволил мне сделать что-то подобное, работая с моими предпочтительными приложениями:

launch foo.pdf

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

Ответы [ 3 ]

5 голосов
/ 23 декабря 2009

В unix per se это будет тот, который пользователь использовал для его открытия, поскольку отсутствует понятие уровня ОС для предпочтительного приложения.

Однако основная среда рабочего стола X определяет такое понятие, и тогда вам нужно использовать их возможности:

  • gnome-open в GNOME (дух)
  • exo-open в XFCE [см. Комментарии в ссылке на гнома]
  • xdg-open может работать во многих средах (предположительно работает в KDE) [см. Комментарии в ссылке на gnome]
  • просто kfmclient exec (или kfmclient4 exec) в KDE (мне не удалось найти ссылку на kde-open, поскольку Роб Х предлагает , и у меня нет системы KDE под рукой, чтобы попробовать)

Теперь Mac OS X предоставляет команду open, которая работает подобно щелчку файла в искателе (то есть, она запрашивает ОС ...)


Несколько исправлений благодаря ephemient в комментариях. Я не буду обсуждать mailcap, потому что я никогда этого не понимал и забыл, что оно существует ...

1 голос
/ 23 декабря 2009

Ответ зависит от используемой среды рабочего стола. Поскольку вы упомянули Okular, я предполагаю, что вы используете KDE. Так что попробуйте:

kde-open <file>

Для GNOME есть эквивалент:

gnome-open <file>
0 голосов
/ 23 декабря 2009

Чтобы ответить на этот вопрос самостоятельно, я определил простую (bash) функцию, которая работает так, как я ожидаю:

function show { 
    xdg-open $1 &> NUL
    }

xdg-open был почти таким же, как я хотел, но он позволяет уродливым программным предупреждениям проскальзывать в оболочку, что, похоже, исправляет вышеприведенное.

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

...