Bash: Получение стандартной программы для типа файла - PullRequest
3 голосов
/ 25 июня 2009

фон представляет собой скрипт оболочки для открытия файла .m3u веб-радиостанции. Поэтому я хочу узнать внутри скрипта, что это за программа пользователя для открытия таких файлов. На данный момент он должен установить переменную окружения $ PLAYER, но, очевидно, это не очень хороший способ.

Альтернатива: существует ли команда, которая берет имя файла и ищет для себя соответствующую программу для обработки этого файла? Как file, например,

open-file my_playlist.m3u

Скрипт должен быть переносимым, он будет работать как минимум на машинах с Ubuntu, Debian и Windows / Cygwin.

Приветствия

Ответы [ 2 ]

8 голосов
/ 25 июня 2009

Это должно быть сделано по-разному на каждой платформе. В Mac OS X команда «open» сделает то, что вы хотите.

В Linux это становится неясным, поскольку среда рабочего стола (GNOME или KDE) хранит свой собственный список приложений для каждого типа файлов.

В Ubuntu / GNOME есть два файла, в которых можно найти эту информацию: ~ / .local / share / Applications / defaults.list и ~ / .Local / доля / приложений / mimeinfo.cache

Кто-то, надеюсь, знает, как сделать это в Windows, и может подключиться.

Редактировать: Кража из других ответов:

Linux:

xdg-open [имя файла]

Cygwin:

cygstart [имя файла]

А для полноты вот ссылка на предыдущий вопрос о том, как определить, на какой операционной системе вы работаете: Обнаружение ОС из bash. Сценарий

0 голосов
/ 25 июня 2009

Я бы хотел, если бы был другой ответ на этот вопрос, но я думаю, что вам придется проверять конфиги ассоциации файлов для каждой среды рабочего стола и файлового менеджера (так, nautilus, konqueror, thunar, mc ... все в разных местах и ​​в разных форматах (AFAIK), а также выяснить, какой из них фактически использует пользователь ...

Если у кого-то есть другая идея, я бы хотел ее услышать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...