Jak otworzyć konkretną aplikację, taką jak macOS `open -a`?

14

W systemie macOS w domyślnym uruchomionym terminalu bashmogę wpisać:

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

aby otworzyć adres URL w przeglądarce Firefox lub innej przeglądarce. Działa również w celu uruchomienia programu, np. open -a mapsI otwarcia pliku w domyślnym programie, np open file.pdf.

Jak mogę zrobić to samo na Ubuntu w domyślnym terminalu GNOME, również działającym bash? Wiem, że mogę otworzyć plik lub adres URL xdg-open /path/to/filei mogę otworzyć domyślną przeglądarkę za pomocą sensible-browser. Czy Ubuntu ma ogólne polecenie otwierania plików, aplikacji lub plików w określonych aplikacjach?

Pracuję bashna obu komputerach, 3.2.57(1)-releasemacOS i 4.4.19(1)-releaseUbuntu.

miguelmorin
źródło
Nigdy nie korzystałem z komputera Mac, więc możesz mi powiedzieć, dlaczego chcesz go używać open -a Firefox http://www.wikipedia.org? Nie można zrobić firefox http://www.wikipedia.org? Wydaje się, że jest to bezużyteczna funkcja open, gdy chodzi o otwieranie programów bash.
JoL
1
Bash na macOS działa inaczej, np. Twoje polecenie podaje błąd bash: firefox: command not found. Ten sam błąd Firefoxco w nazwie programu.
miguelmorin
3
bashdziała dokładnie tak samo; to Firefox, który jest zainstalowany inaczej niż na Ubuntu. W systemie macOS można na przykład uruchomić /Applications/Firefox.app/Contents/MacOS/firefox-binz wiersza polecenia. Firefox.appJest to specjalny rodzaj folderu, który zawiera nie tylko plik wykonywalny, ale pliki, które w systemie Linux może być rozproszone w różnych /usr/bin/, /usr/lib, /etcitp katalogów. Finder wie, jak uruchomić rzeczywistą aplikację, na przykład po dwukrotnym kliknięciu Firefox.app. openjest sposobem na „uruchomienie” specjalnego folderu z linii poleceń.
chepner
4
To nie bashdziała inaczej: firefox jest instalowany jako aplikacja OS X ( Firefox.app) i nie ma go w zwykłej PATH. Innym powodem do użycia open -ajest to, że właściwie uruchamia uruchamianą aplikację, zamiast czekać na jej zakończenie.
Alexis

Odpowiedzi:

10

Możesz w szczególności użyć nazwy żądanego programu (jeśli można go użyć jako narzędzia wiersza poleceń).

Na przykład adresy URL:

firefox duckduckgo.com
chromium-browser askubuntu.com

PDF:

evince foo.pdf
okular bar.pdf

Zdjęcia:

gpicview foo.png
feh bar.jpeg

Teksty:

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

Wideo / muzyka:

mpv  foo.mp3
vlc  bar.mp4

Jeśli chcesz, aby program był uruchamiany odłączony od terminala, wolę to w ten sposób:

nohup program args &

Na przykład:

nohup firefox askubuntu.com &

Pamiętaj, że zawsze możesz przekierować wyjścia jak zwykle, np .:

nohup firefox duckduckgo.com &> /dev/null &
Ravexina
źródło
2
eog picture.jpgrównież dla obrazów, jeśli masz zainstalowany gnome-desktop :)
Videonauth
1
@Videonauth Tak, lub jakiekolwiek inne narzędzie;)
Ravexina,
2
@BaptisteCandellier Nie mam sensu dzwonić opendo innego programu. Dlaczego nie wywołać bezpośrednio innego programu? Jaką użyteczność opendodaje? Ta odpowiedź odzwierciedla naturalną czynność otwierania określonych aplikacji.
JoL
1
@BaptisteCandellier Zgadzam się, a openna macOS działa zarówno do otwierania plików i folderów w domyślnej aplikacji, jak i w określonych aplikacjach. Wygląda na to, że oryginał bashposzedł inną ścieżką xdg-opendla plików i nazw aplikacji dla reszty.
miguelmorin
2
Inną różnicą openw MacOS jest to, że uruchamia aplikację odłączoną od konsoli, z której jest uruchamiana, tzn. Jeśli konsola się zamknie, aplikacja pozostanie włączona. W systemie Ubuntu należy użyć nohuppolecenia, aby uzyskać takie samo zachowanie. (ponieważ poprzedzanie każdego polecenia poleceniem nohup i przekierowywanie wyjścia dla każdego uruchamianego polecenia staje się męczące, bardziej sensowne może być zdefiniowanie niestandardowego skrótu)
undercat oklaskuje Monikę