Linux-эквивалент команды Mac OS X «открыть» [закрыто]


214

Я нашел команду «открыть» в Mac OS X очень удобной в командной строке. Из "Человек открыт":

Команда openоткрывает файл (или каталог, или URL), как если бы вы дважды щелкнули значок файла. Если имя приложения не указано, приложение по умолчанию, определенное с помощью LaunchServices, используется для открытия указанных файлов.

То есть, если я хочу открыть файл PDF с помощью программы просмотра PDF по умолчанию (бывает Preview), мне нужно только сделать:

open my.pdf

В Linux, однако, чтобы открыть файл PDF из командной строки, мне пришлось покопаться, чтобы найти средство просмотра PDF по умолчанию, например, «evince» (кто бы мог догадаться ??), а затем

evince my.pdf

Итак, есть ли простой эквивалент команды open в командной строке Linux?

Спасибо!


6
Может быть, этот вопрос стоит перенести на superuser.com?
— quazgar

1
Суперпользователь кажется неуместным - существует ли StackOverflow для «обычных пользователей» или, возможно, «программистов, которые хотят создавать сценарии для других приложений», то есть для автоматизации?
— Крейзи Глеу

Аскубунту может подойти.
— Гоферхан

Ответы:


238

Вы можете попробовать xdg-open, большинство дистрибутивов Linux имеют это. Откроется приложение, связанное с вашим файлом по умолчанию.

К вашему сведению https://portland.freedesktop.org/doc/xdg-open.html


13
Однако большая разница между этим и тем open, что он не открывает файл / приложение в фоновом режиме. Приложения для Linux кажутся очень болтливыми и часто выводят несколько строк диагностики и предупреждений прямо в ваш терминал (хотя на самом деле ничего не пошло не так). Я обычно должен сделать что-то вроде xdg-open <file> &> /dev/null &этого. Есть ли что-нибудь лучше, чем xdg-open в этом отношении?
— Суан

13
@Suan: приложение открывается в фоновом режиме, отдельно от терминала, так что вы можете продолжить работу в терминале, как только приложение будет запущено. Так что трейлинг &не нужен. Что касается «нескольких линий диагностики», то они взяты из самого приложения, а не из xdg-open. Если вам не нужны какие-либо выходные данные, вам &> /dev/nullдаже нужно использовать их evinceнапрямую (пример OP), поэтому ваша жалоба является недействительной. xdg-openэто действительно путь.
— MestreLion

15
@MestreLion Я не думаю, что жалоба является полностью недействительной, поскольку открытие Mac не приводит к выводу вывода приложения в терминал.
— Макс Нанаси

7
@MaxNanasy: вывод из приложений, это не xdg-openвина, если они болтливы. И подавление таких сообщений должно быть выбором пользователя , а не XDG. Так что это пустая жалоба просить что-то «лучше», чем xdg-open. Кроме того, если у Mac openнет возможности выводить эти сообщения, я бы сказал, что openэто гораздо хуже, чем xdg-open, поскольку, когда вы используете командную строку для запуска файлов, вы обычно заинтересованы в этом выводе (в противном случае, почему бы просто не дважды щелкнуть файл в браузере, как Nautilus?)
— MestreLion

12
@MestreLion Хотя можно утверждать, что жалоба тривиальна, поскольку alias open='xdg-open &>/dev/null'приводит примерно к желаемому поведению (хотя ошибки самого xdg-open (в отличие от только что запущенной программы) также будут игнорироваться, что нежелательно).
— Макс Нанаси

76

Вы ищете эквивалент xdg-open, который можно использовать так же, как openкоманду OS X. Например:

xdg-open ~/Documents/Chubby_Bubbies.odt

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

Конечно, вы можете использовать псевдоним, чтобы openон соответствовал OS X (вы можете выбрать все, что захотите), но лично я использую правую квадратную скобку ( ]) для быстрого доступа по соображениям скорости. Чтобы использовать это, добавьте следующее в ваш .bashrcфайл:

alias ']'='xdg-open'

Затем, чтобы открыть любой ресурс, используйте его как любой из этих примеров:

] www.google.com
] file.txt
] ~/Pictures
] ssh://myserver.local/home/jeremy

Также это позволяет открыть файловый браузер (например, Nautilus) в текущем каталоге:

] .

По опыту я обнаружил, что однобуквенные псевдонимы лучше всего подходят для вышеупомянутого ярлыка. В конце концов, цель - эффективность. И вы можете вернуться и сделать тот же псевдоним на OS X - я оставляю это в качестве упражнения для читателя. :-)


26
Я сделал псевдоним «open» для «xdg-open», чтобы обеспечить его согласованность как в Linux, так и в Mac.
— Адам Быртек

Это хорошо, но не замечательно, я попытался открыть файл .url и открыл его в gedit.
— Сорин

18
@sorin Ты пытаешься заставить это звучать так, как будто это моя вина ?!
— Джереми Виссер

7
@sorin: xdg-openоткрывает приложение по умолчанию для вашей системы. В вашем случае .urlфайлы открываются в gedit. Если вы хотите изменить это, щелкните правой кнопкой мыши файл в Nautilus и перейдите в Свойства> Открыть с помощью, чтобы изменить приложение по умолчанию, и оно xdg-openбудет работать соответствующим образом.
— MestreLion

Вот Gist, который я сделал, просто скопируйте и вставьте команду в разделе «Все» в первом комментарии.
— ozanmuyes

14

Я сам разобрался с этим, так что подумал, что напишу, как я это сделал, что особенно важно для того, что просила Суан. Эти шаги позволяют вам просто напечатать "open", а не ваш терминал, покрытый сообщениями, которые вам не нужны:

Создайте скрипт с именем openin ~/bin, содержимое просто:

xdg-open "$1" &> /dev/null &

Сохраните и закройте скрипт, затем введите «source .profile» (или .bash_profile, если необходимо). Вот так, набрав «open Music», вы откроете вашу музыкальную папку в графическом интерфейсе nautilus и не должны ничего вводить в ваш терминал.


Что с псевдонимом и странным местоположением? Просто позвоните самому сценарию openи поместите его в свой PATH (обычно в $HOME/bin/open)
— tripleee

На моей машине (Ubuntu 11.10), если вы добавляете скрипт с именем 'open' к своему пути и пытаетесь сделать так, чтобы он был переопределен / bin / open. Поэтому я не могу найти способ заставить тебя работать без псевдонима.
— Anake

Хитрость заключается в том, чтобы иметь свой собственный скрипт в каталоге, который появляется раньше, PATHчем в /bin. По соглашению, если он у вас есть, $HOME/binон будет добавлен в начало PATH, перед любыми системными каталогами. Как правило, это сделано вашим .profileили подобным. Например, по умолчанию .profileв Ubuntu делает именно это.
— трипл

2
Перенаправление вывода на /dev/nullэто немного капризно; возможно, вы могли бы перенаправить вывод $HOME/.xsession-errorsили что-то в этом роде, чтобы диагностика не была полностью потеряна в случае необходимости устранения неполадок.
— трипл

1
@efdee: правильное цитирование всех переменных является хорошей практикой программирования и жизненно важно в скриптах bash. Это не имеет ничего общего xdg-open, это проблема оболочки.
— MestreLion

11

Традиционно вы можете использовать команду «видеть». Который просто использует run-mailcap. Это будет работать без Gnome, X и т. Д.

man see

3
Проблема в том, что run-mailcap(и во многих его псевдонимах) используется отдельная (и ужасно устаревшая) база данных ассоциации приложений. Например, в моей системе, хотя .mp3песни правильно открываются в VLC, .txtфайлы открываются меньше (вместо gedit), а .pdfфайлы просто не открываются! (Ошибка: не найдены правила «просмотра» mailcap для типа «application / pdf»)
— MestreLion

Как я уже сказал, это зависит от каждой системы. Немногие приложения регистрируют себя так, чтобы run-mailcapих распознавали. xdg-openвнутреннее использование gvfs-open(в системах Gnome, таких как Ubuntu), которое, в свою очередь, использует спецификацию базы данных mime базы данных xdg, которую используют гораздо больше приложений.
— MestreLion

Открыл более 50 страниц PDF gimpдля меня. Я буду придерживаться xdg-open.
— user1717828

Открытие txt файлов в lessx''D
— Тимо

4

гном открыть


7
gnome-open теперь устарела и, кроме того, уже использовалась внутри, xdg-openесли пользователь был в Gnome (теперь он использует gvfs-open)
— MestreLion

2

Если у вас правильно настроены мимы, вы можете использовать mimeopen. Проверьте его справочную страницу, так как она имеет несколько полезных опций.


1
Было бы хорошо, если бы этот ответ был расширен. Мне было бы интересно посмотреть, как это работает
— Магнус

-3

В среде Gnome Desktop я использую следующую команду:

nautilus `pwd` &

Это похоже на «открытый». команда в Mac


11
Этот ответ имеет несколько проблем: A) Он открывает текущий каталог, а не файл, как того требовал пользователь. B) вы можете использовать .вместо " pwd" C) если вы измените pwdфайл, пользователю все равно нужно будет нажать ENTER после того, как Nautilus откроет D) Открытие nautilus первым только для того, чтобы открыть файл, является очень косвенным решением.
— МестреЛион
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.