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


214

У командному рядку команда "відкрити" в Mac OS X дуже зручна. Від "людина відкрита":

openКоманда відкриває файл (або каталог або URL), так само , як якщо б ви мали подвійне клацання на піктограмі файлу. Якщо ім'я програми не вказано, програма для замовчування, визначена через LaunchServices, використовується для відкриття вказаних файлів.

Тобто, якщо я хочу відкрити файл PDF з переглядачем PDF за замовчуванням (трапляється попередній перегляд), мені потрібно лише зробити:

open my.pdf

Однак у Linux, щоб відкрити PDF-файл із командного рядка, мені довелося перекопатися, щоб знайти переглядач PDF за замовчуванням, наприклад, "evince" (хто б здогадався ??), а потім

evince my.pdf

Отже, чи існує простий еквівалент команди «відкрити» в командному рядку Linux?

Дякую!


6
Можливо, це питання слід перенести на сайт superuser.com?
квазгар

1
Super User видається недоречним - чи є StackOverflow для "звичайних користувачів" чи, можливо, "програмістів, які хочуть сценаріювати інші програми", тобто автоматизувати?
Krazy Glew

askubuntu може підійти.
Гоферхан

Відповіді:


238

Можна спробувати xdg-open, у більшості дистрибутивів Linux це є. Він відкриє додаток, пов’язаний за замовчуванням для вашого файлу.

FYI 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безпосередньо (приклад ОП), тому ваша скарга недійсна. xdg-openце справді шлях.
MestreLion

15
@MestreLion Я не думаю, що скарга є абсолютно недійсною, оскільки відкритість Mac не призводить до того, що вихід програми повторюється до терміналу.
Макс Нанасі

7
@MaxNanasy: вихід із програм, не xdg-openвинен, якщо вони балаканини. І пригнічуючи такі повідомлення повинні бути користувача вибір, а НЕ XDG років. Тож це нікчемна скарга просити щось "краще", ніж xdg-open. Крім того , якщо Мак 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.
sorin

18
@sorin Ви намагаєтесь зробити так, ніби це я винен ?!
Джеремі Віссер

7
@sorin: xdg-openвідкриває програму для файлу за замовчуванням для файлу. У вашому випадку .urlфайли встановлюються для відкриття в gedit. Якщо ви хочете змінити це, клацніть правою кнопкою миші файл у Nautilus та перейдіть до Властивості> Відкрити, щоб змінити програму за замовчуванням, і xdg-openбуде працювати відповідно.
MestreLion

Ось історія, яку я створив, просто скопіюйте, вставте та виконайте команду в розділі "Всього" в першому коментарі.
ozanmuyes

14

Я просто розібрав це сам, і подумав, що запишу, як це робив, що особливо стосується того, що запитав Суан. Ці кроки дозволяють просто ввести "відкрити", а не ваш термінал, охоплений повідомленнями, які вам не потрібні:

Створіть скрипт openв ~/binзміст всього:

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

Збережіть і закрийте скрипт, а потім введіть "source .profile" (або .bash_profile, якщо це доречно). Ось так набравши "Відкрити музику", ви відкриєте свою папку музики в nautilus GUI і не повинні нічого вводити у свій термінал.


Що з псевдонімом та дивною локацією? Просто зателефонуйте до самого сценарію openта вставте його у свій PATH (як правило, у $HOME/bin/open)
tripleee

На моїй машині (ubuntu 11.10), якщо ви додасте на свій шлях сценарій під назвою "відкрити", і спробуйте зробити так, щоб це було перекрито / bin / open. Тож я не можу розробити спосіб налагодити роботу без псевдоніму.
Анаке

Хитрість полягає в тому, щоб мати свій власний скрипт у каталозі, який з'явився раніше, PATHніж у вас /bin. За умовою, якщо у вас є, $HOME/binвін буде доданий до початку PATH, перед будь-якими системними каталогами. Зазвичай це робиться вашим .profileчи подібним. Наприклад, за замовчуванням .profileна Ubuntu робиться саме це.
трійка

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

1
@efdee: правильне цитування всіх змінних є хорошою практикою програмування та життєво важливою умовою в сценаріях bash. Це не має нічого спільного xdg-open, це питання оболонки.
MestreLion

11

Традиційно можна використовувати команду "see". Який просто використовує 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

Відкрив gimpдля мене 50-сторінковий PDF-файл . Я буду дотримуватися xdg-open.
користувач1717828

Відкриття файлів txt у lessx''D
Тімо

4

гном-відкритий


7
gnome-open тепер застаріло, і до того ж його вже використовували внутрішньо, xdg-openякщо користувач був у Gnome (зараз він використовує gvfs-open)
MestreLion

2

Якщо ви встановили міми правильно, ви можете використовувати mimeopen. Перегляньте його довідкову сторінку, оскільки вона має деякі корисні варіанти.


1
Було б добре, якби цю відповідь було розширено. Мені було б цікаво подивитися, як це працює
Магнус

-3

У середовищі Gnome Desktop я використовую таку команду:

nautilus `pwd` &

Це схоже на "відкрито". команда в Mac


11
Ця відповідь має декілька питань: А) Він відкриває поточний каталог, а не файл, як запитав користувач. B) ви можете використовувати .замість « pwd» C) , якщо ви змінюєте pwdдля файлу, користувач по- , як і раніше потрібно буде вдарити ENTER після Nautilus відкриває D) наутилуса Відкриття першого тільки для нього , щоб відкрити файл дуже непряме рішення.
MestreLion
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.