Есть ли команда «открыть с помощью» для командной строки?


24

Есть ли в командной строке способ получения рекомендованного списка программ, используемых для открытия определенного файла, в зависимости от типа файла? Например, .pdfфайл будет содержать open with...рекомендации с использованием программ Evinceи Document Viewer.

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

Кстати, я использую Ubuntu 13.10.

про-наконечник

Благодаря выбранному ответу @slm, приведенному ниже, я создал следующий скрипт bash в файле с именем openwith.sh:

xdg-mime query default $(xdg-mime query filetype $1)

Добавить как псевдоним или выполнить непосредственно как openwithкоманду.


1
Вы можете попробовать с gnome-open file. Я добавил alias o='gnome-open'к моему .bashrcдля простоты.
Пол GD

gnome-openработает аналогично xdg-open.
СЛМ

Ответы:


33

Я не видел ни одной команды, которая бы действовала как "открыть с помощью ...", но вы можете использовать эту команду, xdg-open <file>чтобы открыть данные <file>в приложении, которые связаны с этим конкретным типом файла.

Примеры

Открытие текстового файла:

$ xdg-open tstfile.txt
$

В результате файл tstfile.txtоткрывается в gedit:

                         сс гедит

Открытие документа LibreOffice Writer:

$ xdg-open tstfile.odt 
$

В результате файл tstfile.odtоткрывается в Writer:

                         писатель

Какие приложения используются?

Вы можете использовать xdg-mimeдля запроса системы, чтобы выяснить, какие приложения связаны с данным типом файла.

$ xdg-mime query default $(xdg-mime query filetype tstfile.txt)
gedit.desktop calibre-ebook-viewer.desktop

$ xdg-mime query default $(xdg-mime query filetype tstfile.odt)
libreoffice-writer.desktop calibre-ebook-viewer.desktop

Это двухэтапная операция. Сначала я запрашиваю MIME-тип данного файла xdg-mime query filetype tstfile.txt, который вернется text/plain. Затем он используется для выполнения другого поиска, чтобы узнать список приложений, связанных с этим MIME-типом. Как вы можете видеть выше, у меня есть 2 приложения, связанные, geditи calibreдля .txtфайлов.

Вы также можете xdg-mimeизменить ассоциации. Смотрите man xdg-mimeдля более подробной информации.


Есть ли способ показать другие виды программ, кроме стандартных? Например, я только что установил okularдля просмотра PDF, но ваш пример выше показывает, только evinceкогда я запускаю его в PDF-файл.
модуль

1
@Lucas - да, примеры, которые я показал, показывают приложения, которые связаны с данным типом файла выше. Например Файлы типа .txtсвязаны с Gedit и Calibre, например.
СЛМ

Нужно ли мне иметь .desktopфайлы для перечисленных программ? Например, когда я запускаю скрипт для .pdfфайла, он возвращается evince.desktop, хотя я тоже могу его запустить okular.
модуль

@Lucas - это, вероятно, лучше всего задавать как новый Q, так как сейчас мы блуждаем от первоначального Q.
СЛМ

5

Если вы в основном работаете в командной строке, вы можете посмотреть на файловый менеджер на основе curses, например, ranger или vifm . Оба позволяют вам определять действия по умолчанию для типов файлов.

Например, в vifm ~/.vifm/vifmrcвы можете определить ассоциации следующим образом:

" Images
filetype *.jpg,*.jpeg,*.gif,*.tif,*.png,*.bmp sxiv 

" Media
filetype *.flv,*.avi,*.mp4,*.mpeg,*.mpg,*.mov,*.ogg,*.ogv,*.mkv mpv 

" Web
filetype *.html,*.htm,*.shtml /home/jason/Scripts/vimprobtab.sh 

" PDF
filetype *.pdf apvlv

При нажатии Enterкурсора на любом файле с одним из определенных действий он будет открыт соответствующим приложением. Как вы можете видеть в случае .htmlфайлов, вы можете запускать как скрипт, так и приложение.


5

Вроде, но в результате это изменит ваше приложение по умолчанию. Я не уверен, на каких других операционных системах это работает, но приведенные ниже инструкции работают для Ubuntu 12.04 - Desktop X86-64. У меня не было удобных PDF-файлов, поэтому я проверил архив .zip.

Общие шаги

Шаг 1

В терминале типа:

$ mimeopen -d /home/username/example.zip
снимок экрана № 1 = https://copy.com/qfWSZaZ4FzlA

    сс # 1

Шаг 2

Выберите из списка, введя нужное #приложение и нажав enter. Файл сразу же откроется в выбранном вами приложении.

снимок экрана № 2 = https://copy.com/um6Rf7zRdceT

    сс # 2

снимок экрана № 3 = https://copy.com/ytwKCqR6nv8i

    сс # 3

Заметки

Примечание № 1

Это меняет приложение по умолчанию на выбранное вами, и поэтому каждый раз, когда вы открываете этот тип файла, оно теперь открывается в любом приложении, которое вы в последний раз выбрали из списка.


Вы хотели поставить хеш-знак (#) в URL для скриншота 3?
trysis

@trysis Я просто использовал его, чтобы обойти ограничение в 2 URL.
пожалуйста, удалите меня

О, имеет смысл. Тем не менее, выглядит странно
trysis

Я очистил вас и добавил третий URL для вас.
SLM

2

Полагаю, зависит от того, какой Unix вы используете. В OS X вы можете использовать openкоманду:

OPEN(1)                   BSD General Commands Manual                  OPEN(1)

NAME
     open -- open files and directories

SYNOPSIS
     open [-e] [-t] [-f] [-F] [-W] [-R] [-n] [-g] [-h] [-b bundle_identifier]
          [-a application] file ... [--args arg1 ...]

DESCRIPTION
     The open command opens a file (or a directory or URL), just as if you had
     double-clicked the file's icon. If no application name is specified, the
     default application as determined via LaunchServices is used to open the
     specified files.

     If the file is in the form of a URL, the file will be opened as a URL.

...

Кроме того, openкоманда впервые появилась в NextStep и была унаследована OS X, поэтому она может быть доступна в той или иной форме на других, более или менее основанных на OpenStep платформах (например, AfterStep, LiteStep).
Ионокласт Бригам
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.