¿Cómo abrir una aplicación específica como macOS `open -a`?

14

En macOS en la Terminal predeterminada en ejecución bash, puedo escribir:

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

abrir una URL con Firefox u otro navegador. También funciona para iniciar un programa, por ejemplo open -a maps, y para abrir un archivo en el programa predeterminado, por ejemplo open file.pdf.

¿Cómo puedo hacer lo mismo en Ubuntu en la Terminal predeterminada de GNOME que también se ejecuta bash? Sé que puedo abrir un archivo o URL con xdg-open /path/to/file, y puedo abrir el navegador predeterminado con sensible-browser. ¿Ubuntu tiene un comando general para abrir archivos, aplicaciones o archivos en aplicaciones específicas?

Estoy corriendo bashen ambas máquinas, 3.2.57(1)-releaseen macOS y 4.4.19(1)-releaseen Ubuntu.

miguelmorin
fuente
Nunca he usado una Mac, ¿puedes decirme por qué la usarías open -a Firefox http://www.wikipedia.org? ¿No puedes hacer firefox http://www.wikipedia.org? Parece una característica inútil open, cuando abrir programas es el punto central bash.
JoL
1
Bash en macOS funciona de manera diferente, por ejemplo, su comando da el error bash: firefox: command not found. Mismo error con el Firefoxnombre del programa.
miguelmorin
3
bashfunciona exactamente igual; Firefox se instala de manera diferente a Ubuntu. En macOS, podría, por ejemplo, ejecutar /Applications/Firefox.app/Contents/MacOS/firefox-bindesde la línea de comandos. Firefox.appes un tipo especial de carpeta que no sólo contiene el ejecutable, pero los archivos que en Linux podrían ser esparcidos por en varios /usr/bin/, /usr/lib, /etc, etc. directorios. El Finder sabe cómo ejecutar la aplicación real cuando, por ejemplo, hace doble clic en Firefox.app. openes una forma de "ejecutar" la carpeta especial desde la línea de comandos.
chepner
44
No es que bashfuncione de manera diferente: Firefox está instalado como una aplicación OS X ( Firefox.app) y no está en la RUTA normal. Otra razón para usar open -aes que pone en segundo plano correctamente la aplicación que inicia, en lugar de esperar hasta que salga.
alexis

Respuestas:

10

Puede usar específicamente el nombre de su programa deseado (si puede usarse como una herramienta de línea de comando).

Por ejemplo, urls:

firefox duckduckgo.com
chromium-browser askubuntu.com

PDF:

evince foo.pdf
okular bar.pdf

Imágenes:

gpicview foo.png
feh bar.jpeg

Textos:

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

Video / Música:

mpv  foo.mp3
vlc  bar.mp4

Si desea que el programa se ejecute separado de la terminal, esta es la forma en que prefiero hacerlo:

nohup program args &

Por ejemplo:

nohup firefox askubuntu.com &

Recuerde que siempre puede redirigir las salidas como de costumbre, por ejemplo:

nohup firefox duckduckgo.com &> /dev/null &
Ravexina
fuente
2
eog picture.jpgpara imágenes también si tienes instalado gnome-desktop :)
Videonauth
1
@Videonauth Yeah, o cualquier otro tipo de herramientas;)
Ravexina
2
@BaptisteCandellier No tengo el sentido de llamar openpara llamar a otro programa. ¿Por qué no simplemente llamar al otro programa directamente? ¿Qué utilidad openagrega? Esta respuesta refleja lo natural que se debe hacer para abrir aplicaciones específicas.
JoL
1
@BaptisteCandellier Estoy de acuerdo, y openen macOS funciona tanto para abrir archivos y carpetas en la aplicación predeterminada como en aplicaciones específicas. Parece el original bashfue en un camino diferente con xdg-openlos archivos y los nombres de las aplicaciones para el resto.
miguelmorin
2
Otra cosa que es diferente openen MacOS es que inicia la aplicación separada de la consola desde la que se ejecuta, es decir, si la consola se cierra, la aplicación permanecerá encendida. En Ubuntu uno necesita usar el nohupcomando para obtener el mismo comportamiento. (dado que prefijar cada comando con nohup y redirigir la salida para cada comando que ejecuta se vuelve agotador, puede tener más sentido definir un acceso directo personalizado)
undercat aplaude a Monica el