Як відкрити конкретну програму, наприклад macOS `open -a`?


14

На macOS у терміналі, що працює за замовчуванням bash, я можу набрати:

open -a Firefox http://www.wikipedia.org

щоб відкрити URL-адресу за допомогою Firefox або іншого браузера. Він також працює для запуску програми, наприклад open -a maps, та для відкриття файлу в програмі за замовчуванням, наприклад open file.pdf.

Як я можу зробити те ж саме на Ubuntu в терміналі GNOME за замовчуванням, який також працює bash? Я знаю, що я можу відкрити файл або URL-адресу xdg-open /path/to/file, і можу відкрити браузер за замовчуванням за допомогою sensible-browser. Чи має Ubuntu загальну команду для відкриття файлів, програм або файлів у певних програмах?

Я працюю bashна обох машинах, 3.2.57(1)-releaseна macOS і 4.4.19(1)-releaseна Ubuntu.


Я ніколи не використовував Mac, тож чи можете ви сказати мені, чому б ви використовували open -a Firefox http://www.wikipedia.org? Ти не можеш firefox http://www.wikipedia.org? Це здається непотрібною особливістю open, коли відкриття програм - це сама суть bash.
JoL

1
Bash на macOS працює інакше, наприклад, ваша команда видає помилку bash: firefox: command not found. Та сама помилка, що і Firefoxназва програми.
miguelmorin

3
bashпрацює точно так само; це Firefox, який встановлюється інакше, ніж на Ubuntu. На macOS, наприклад, можна запустити /Applications/Firefox.app/Contents/MacOS/firefox-binз командного рядка. Firefox.appце особливий вид папки , яка містить не тільки виконуваний файл, але файли в Linux можуть бути розкидані в різних /usr/bin/, /usr/lib, /etcі т.д. каталогів. Finder знає, як запустити фактичну програму, коли ви, наприклад, двічі клацніть на Firefox.app. openце спосіб "запустити" спеціальну папку з командного рядка.
чепнер

4
Це не так, як bashпрацює інакше: Firefox встановлюється як додаток OS X ( Firefox.app) і не є у звичайному PATH. Ще однією причиною використання open -aє те, що він належним чином фоновує програму, яку він запускає, замість того, щоб чекати на ній, поки не вийде.
alexis

Відповіді:


10

Ви можете спеціально використовувати ім'я потрібної програми (якщо це можливо використовувати як інструмент командного рядка).

Наприклад, URL-адреси:

firefox duckduckgo.com
chromium-browser askubuntu.com

PDF:

evince foo.pdf
okular bar.pdf

Зображення:

gpicview foo.png
feh bar.jpeg

Тексти:

gedit foo.txt
mousepad /etc/config
leafpad bar.xml

Відео / Музика:

mpv  foo.mp3
vlc  bar.mp4

Якщо ви хочете, щоб програма запускалася відключена від терміналу, я вважаю за краще це робити:

nohup program args &

Наприклад:

nohup firefox askubuntu.com &

Пам'ятайте, що ви завжди можете перенаправляти виходи, як зазвичай, наприклад:

nohup firefox duckduckgo.com &> /dev/null &

2
eog picture.jpgтакож для зображень, якщо у вас встановлений gnome-desktop :)
Videonauth

1
@Videonauth Так, або будь-який інший інструмент;)
Ravexina

2
@BaptisteCandellier Мені не вдається openвикликати іншу програму. Чому б просто не зателефонувати до іншої програми безпосередньо? Яку корисність openдодає? Ця відповідь відображає природне, що потрібно робити, щоб відкрити конкретні програми.
JoL

1
@BaptisteCandellier Я згоден, і openна macOS працює як для відкриття файлів і папок у програмі за замовчуванням, так і в конкретних програмах. Здається, оригінал bashпішов іншим шляхом xdg-openдля файлів та назв додатків для решти.
мігельморин

2
Інша річ, що відрізняється openв MacOS, це те, що він запускає додаток, відірваний від консолі, з якої запущено, тобто якщо консоль закриється, додаток залишатиметься ввімкненим. Для Ubuntu потрібно використовувати nohupкоманду, щоб отримати таку саму поведінку. (оскільки префіксація кожної команди з nohup та вихідний переспрямування для кожної запущеної команди стає втомлювальним, можливо, має більше сенсу визначити спеціальний ярлик)
undercat аплодує Моніці
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.