Comment ouvrir une application spécifique comme macOS `open -a`?

14

Sur macOS dans le terminal par défaut en cours d'exécution bash, je peux taper:

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

pour ouvrir une URL avec Firefox ou un autre navigateur. Il fonctionne également pour lancer un programme, par exemple open -a maps, et pour ouvrir un fichier dans le programme par défaut, par exemple open file.pdf.

Comment puis-je faire de même sur Ubuntu dans le terminal GNOME par défaut également en cours d'exécution bash? Je sais que je peux ouvrir un fichier ou une URL avec xdg-open /path/to/file, et je peux ouvrir le navigateur par défaut avec sensible-browser. Ubuntu a-t-il une commande générale pour ouvrir des fichiers, des applications ou des fichiers dans des applications spécifiques?

Je fonctionne bashsur les deux machines, 3.2.57(1)-releasesur macOS et 4.4.19(1)-releasesur Ubuntu.

miguelmorin
la source
Je n'ai jamais utilisé de Mac, pouvez-vous me dire pourquoi vous l'utiliseriez open -a Firefox http://www.wikipedia.org? Tu ne peux pas firefox http://www.wikipedia.org? Cela semble être une caractéristique inutile de open, lorsque l'ouverture de programmes est le but même de bash.
JoL
1
Bash sur macOS fonctionne différemment, par exemple votre commande donne l'erreur bash: firefox: command not found. Même erreur avec le Firefoxnom de programme.
miguelmorin
3
bashfonctionne exactement de la même manière; c'est Firefox qui est installé différemment que sur Ubuntu. Sur macOS, vous pouvez, par exemple, exécuter à /Applications/Firefox.app/Contents/MacOS/firefox-binpartir de la ligne de commande. Firefox.appest un type particulier de dossier qui contient non seulement l'exécutable, mais les fichiers sous Linux peut être éparpillée dans différents /usr/bin/, /usr/lib, /etc, etc. répertoires. Le Finder sait comment exécuter l'application réelle lorsque, par exemple, vous double-cliquez sur Firefox.app. openest un moyen de "lancer" le dossier spécial à partir de la ligne de commande.
chepner
4
Ce n'est pas que cela bashfonctionne différemment: Firefox est installé en tant qu'application OS X ( Firefox.app) et n'est pas sur le PATH normal. Une autre raison de l'utiliser open -aest qu'il met correctement en arrière-plan l'application qu'il lance, au lieu de l'attendre jusqu'à sa fermeture.
alexis

Réponses:

10

Vous pouvez spécifiquement utiliser le nom de votre programme souhaité (s'il peut être utilisé comme outil de ligne de commande).

Par exemple, les URL:

firefox duckduckgo.com
chromium-browser askubuntu.com

PDF:

evince foo.pdf
okular bar.pdf

Images:

gpicview foo.png
feh bar.jpeg

Des textes:

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

Vidéo / Musique:

mpv  foo.mp3
vlc  bar.mp4

Si vous voulez que le programme soit exécuté indépendamment du terminal, voici la façon dont je préfère le faire:

nohup program args &

Par exemple:

nohup firefox askubuntu.com &

N'oubliez pas que vous pouvez toujours rediriger les sorties comme d'habitude, par exemple:

nohup firefox duckduckgo.com &> /dev/null &
Ravexina
la source
2
eog picture.jpgpour les images aussi si vous avez installé gnome-desktop :)
Videonauth
1
@Videonauth Ouais, ou tout autre type d'outils;)
Ravexina
2
@BaptisteCandellier Je n'ai pas le point d'appeler openpour appeler un autre programme. Pourquoi ne pas simplement appeler l'autre programme directement? Quelle utilité openajoute-t-elle? Cette réponse reflète la chose naturelle à faire pour ouvrir des applications spécifiques.
JoL
1
@BaptisteCandellier Je suis d'accord, et opensur macOS fonctionne à la fois pour ouvrir des fichiers et des dossiers dans l'application par défaut et dans des applications spécifiques. Il semble que l'original ait bashsuivi un chemin différent avec les xdg-openfichiers et les noms des applications pour le reste.
miguelmorin
2
Une autre chose qui est différente opendans MacOS est qu'il lance l'application détachée de la console à partir de laquelle elle est exécutée, c'est-à-dire que si la console se ferme, l'application restera activée. Sur Ubuntu, il faut utiliser la nohupcommande pour obtenir le même comportement. (depuis le préfixe de chaque commande avec nohup et la redirection de la sortie pour chaque commande que vous exécutez devient fatigant, il peut être plus logique de définir un raccourci personnalisé)
undercat applaudit Monica