Wie öffne ich eine bestimmte Anwendung wie macOS `open -a`?

14

Unter macOS im Standard-Terminal bashkann ich Folgendes eingeben:

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

um eine URL mit Firefox oder einem anderen Browser zu öffnen. Es funktioniert auch, um z. B. ein Programm zu starten open -a mapsund eine Datei im Standardprogramm zu öffnen, z open file.pdf.

Wie kann ich dasselbe unter Ubuntu tun, wenn das GNOME-Standardterminal ebenfalls ausgeführt wird bash? Ich weiß, dass ich eine Datei oder eine URL mit xdg-open /path/to/fileöffnen kann, und ich kann den Standardbrowser mit öffnen sensible-browser. Verfügt Ubuntu über einen allgemeinen Befehl zum Öffnen von Dateien, Anwendungen oder Dateien in bestimmten Anwendungen?

Ich lasse bashauf beiden Maschinen, 3.2.57(1)-releaseauf macOS und 4.4.19(1)-releaseauf Ubuntu laufen .

Miguelmorin
quelle
Ich habe noch nie einen Mac benutzt. Kannst du mir sagen, warum du ihn benutzt hast open -a Firefox http://www.wikipedia.org? Können Sie nicht tun firefox http://www.wikipedia.org? Es scheint eine nutzlose Funktion von zu sein open, wenn es darum geht, Programme zu öffnen bash.
JoL
1
Bash unter macOS funktioniert anders, z. B. gibt Ihr Befehl den Fehler aus bash: firefox: command not found. Gleicher Fehler mit Firefoxwie Programmname.
Miguelmorin
3
bashfunktioniert genauso; Es ist Firefox, das anders installiert ist als unter Ubuntu. Unter macOS können Sie beispielsweise /Applications/Firefox.app/Contents/MacOS/firefox-binüber die Befehlszeile ausgeführt werden. Firefox.appist eine besondere Art von Ordnern, zerstreut werden könnte in verschiedenen nicht nur die ausführbare Datei, aber Dateien , die in Linux enthält /usr/bin/, /usr/lib, /etcusw. Verzeichnisse. Der Finder kann die eigentliche Anwendung ausführen, wenn Sie beispielsweise auf doppelklicken Firefox.app. openist eine Möglichkeit, den speziellen Ordner über die Befehlszeile "auszuführen".
Chepner
4
Das bashfunktioniert nicht anders: Firefox wird als OS X-Anwendung ( Firefox.app) installiert und befindet sich nicht auf dem regulären Pfad. Ein weiterer Grund für die Verwendung open -aist, dass die gestartete Anwendung ordnungsgemäß hinterlegt wird, anstatt darauf zu warten, bis sie beendet wird.
Alexis

Antworten:

10

Sie können speziell den Namen Ihres gewünschten Programms verwenden (wenn es als Befehlszeilen-Tool verwendet werden kann).

Zum Beispiel URLs:

firefox duckduckgo.com
chromium-browser askubuntu.com

PDF:

evince foo.pdf
okular bar.pdf

Bilder:

gpicview foo.png
feh bar.jpeg

Texte:

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

Video / Musik:

mpv  foo.mp3
vlc  bar.mp4

Wenn Sie möchten, dass das Programm vom Terminal getrennt ausgeführt wird, mache ich das am liebsten so:

nohup program args &

Beispielsweise:

nohup firefox askubuntu.com &

Denken Sie daran, dass Sie die Ausgaben immer wie gewohnt umleiten können, zB:

nohup firefox duckduckgo.com &> /dev/null &
Ravexina
quelle
2
eog picture.jpgAuch für Bilder, wenn Sie Gnome-Desktop installiert haben :)
Videonauth
1
@ Videoauth Ja, oder jede andere Art von Werkzeugen;)
Ravexina
2
@BaptisteCandellier Ich verstehe es nicht, ein openanderes Programm aufzurufen. Warum nicht einfach das andere Programm direkt aufrufen? Welchen Nutzen bringt das open? Diese Antwort gibt die natürliche Vorgehensweise zum Öffnen bestimmter Anwendungen wieder.
JoL
1
@BaptisteCandellier Ich stimme zu und openunter macOS können Sie Dateien und Ordner sowohl in der Standardanwendung als auch in bestimmten Anwendungen öffnen. Es scheint, dass das Original bei den Dateien und den Anwendungsnamen für den Rest basheinen anderen Pfad eingeschlagen hat xdg-open.
Miguelmorin
2
Eine weitere Besonderheit von openMacOS ist, dass es die Anwendung startet, die von der Konsole, auf der es ausgeführt wird, getrennt ist. Wenn die Konsole geschlossen wird, bleibt die App aktiv. Unter Ubuntu muss der nohupBefehl verwendet werden, um dasselbe Verhalten zu erzielen. (Da das Präfixieren jedes Befehls mit nohup und das Umleiten der Ausgabe für jeden von Ihnen ausgeführten Befehl anstrengend wird, ist es möglicherweise sinnvoller, eine benutzerdefinierte Verknüpfung zu definieren.)
undercat applaudiert Monica