Come aprire un'applicazione specifica come macOS `open -a`?


14

Su macOS nel Terminale predefinito in esecuzione bash, posso digitare:

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

per aprire un URL con Firefox o un altro browser. Funziona anche per avviare un programma, ad es open -a maps. E per aprire un file nel programma predefinito, ad es open file.pdf.

Come posso fare lo stesso su Ubuntu anche nel Terminale GNOME predefinito in esecuzione bash? So che posso aprire un file o un URL con xdg-open /path/to/filee posso aprire il browser predefinito con sensible-browser. Ubuntu ha un comando generale per aprire file, applicazioni o file in applicazioni specifiche?

Sono in esecuzione bashsu entrambe le macchine, 3.2.57(1)-releasesu macOS e 4.4.19(1)-releasesu Ubuntu.


Non ho mai usato un Mac, quindi puoi dirmi perché dovresti usare open -a Firefox http://www.wikipedia.org? Non puoi farlo firefox http://www.wikipedia.org? Sembra una caratteristica inutile di open, quando l'apertura dei programmi è proprio il punto bash.
JoL

1
Bash su macOS funziona in modo diverso, ad esempio il tuo comando dà l'errore bash: firefox: command not found. Stesso errore con Firefoxil nome del programma.
miguelmorin,

3
bashfunziona esattamente lo stesso; Firefox è installato in modo diverso rispetto a Ubuntu. Su macOS, ad esempio, è possibile eseguire /Applications/Firefox.app/Contents/MacOS/firefox-bindalla riga di comando. Firefox.appè un particolare tipo di cartella che contiene non solo l'eseguibile, ma i file che in Linux potrebbero essere sparsi su in varie /usr/bin/, /usr/lib, /etc, ecc directory. Il Finder sa come eseguire l'applicazione effettiva quando, ad esempio, fai doppio clic su Firefox.app. openè un modo per "eseguire" la cartella speciale dalla riga di comando.
Chepner,

4
Non bashfunziona diversamente: firefox è installato come un'applicazione OS X ( Firefox.app) e non si trova sul normale PERCORSO. Un altro motivo da usare open -aè che mette correttamente in background l'applicazione che lancia, invece di attendere fino a quando non esce.
alexis

Risposte:


10

È possibile utilizzare specificamente il nome del programma desiderato (se è possibile utilizzarlo come strumento da riga di comando).

Ad esempio, urls:

firefox duckduckgo.com
chromium-browser askubuntu.com

PDF:

evince foo.pdf
okular bar.pdf

Immagini:

gpicview foo.png
feh bar.jpeg

testi:

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

Video / Musica:

mpv  foo.mp3
vlc  bar.mp4

Se vuoi che il programma venga eseguito staccato dal terminale, questo è il modo in cui preferisco farlo:

nohup program args &

Per esempio:

nohup firefox askubuntu.com &

Ricorda che puoi sempre reindirizzare le uscite come al solito, ad esempio:

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

2
eog picture.jpganche per le immagini se hai gnome-desktop installato :)
Videonauth,

1
@Videonauth Sì, o qualsiasi altro tipo di strumento;)
Ravexina,

2
@BaptisteCandellier Non capisco il punto di chiamare openper chiamare un altro programma. Perché non chiamare direttamente l'altro programma? Quale utilità openaggiunge? Questa risposta riflette la cosa naturale da fare per aprire applicazioni specifiche.
JoL

1
@BaptisteCandellier Sono d'accordo, e opensu macOS funziona sia per l'apertura di file e cartelle nell'applicazione predefinita che in applicazioni specifiche. Sembra che l'originale abbia bashseguito un percorso diverso xdg-openper i file e i nomi delle applicazioni per il resto.
miguelmorin,

2
Un'altra cosa che differisce openin MacOS è che avvia l'applicazione staccata dalla console da cui viene eseguita, ovvero se la console si chiude, l'app rimarrà accesa. Su Ubuntu è necessario utilizzare il nohupcomando per ottenere lo stesso comportamento. (dal momento che il prefisso di ogni comando con nohup e il reindirizzamento dell'output per ciascun comando eseguito diventa stancante, potrebbe avere più senso definire un collegamento personalizzato)
undercat applaude Monica
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.