Equivalente de Linux del comando "abrir" de Mac OS X [cerrado]

214

El comando "abrir" en Mac OS X me pareció muy útil en la línea de comandos. De "hombre abierto":

El opencomando abre un archivo (o un directorio o URL), como si hubiera hecho doble clic en el icono del archivo. Si no se especifica el nombre de la aplicación, la aplicación predeterminada determinada a través de LaunchServices se usa para abrir los archivos especificados.

Es decir, si quiero abrir un archivo PDF con el visor de PDF predeterminado (resulta ser Vista previa), solo necesito hacer:

open my.pdf

Sin embargo, en Linux, para abrir un archivo PDF desde la línea de comandos, tuve que cavar para encontrar que el visor de PDF predeterminado es, por ejemplo, "evince" (¿quién lo habría adivinado?), Y luego

evince my.pdf

Entonces, ¿hay un equivalente simple del comando 'abrir' en la línea de comandos de Linux?

¡Gracias!

Joachim Sauer
fuente
66
¿Quizás esta pregunta debería trasladarse a superuser.com?
quazgar
1
El superusuario parece inapropiado: ¿existe un StackOverflow para "usuarios comunes" o posiblemente "programadores que desean ejecutar otras aplicaciones", es decir, automatizar?
Krazy Glew
askubuntu podría encajar.
Gopherkhan

Respuestas:

238

Podrías probar xdg-open, la mayoría de las distribuciones de Linux lo tienen. Se abrirá la aplicación asociada predeterminada para su archivo.

FYI https://portland.freedesktop.org/doc/xdg-open.html

número 5
fuente
13
Una gran diferencia entre esto y open, sin embargo, es que esto no abre el archivo / aplicación en segundo plano. Las aplicaciones de Linux parecen ser muy conversadoras y, a menudo, generan múltiples líneas de diagnósticos y advertencias directamente en su terminal (aunque realmente nada salió mal). Por lo general, tengo que hacer algo así xdg-open <file> &> /dev/null &. ¿Hay algo mejor que xdg-open a este respecto?
Suan
13
@Suan: Abre la aplicación en el "fondo", separada de la terminal, de una manera que puede continuar trabajando en la terminal tan pronto como se inicie la aplicación. Por lo tanto, el seguimiento &no es necesario. En cuanto a las "múltiples líneas de diagnóstico", son de la aplicación en sí, no de xdg-open. Si no desea ningún resultado, necesitaría &> /dev/nullincluso usarlo evincedirectamente (ejemplo de OP), por lo que su queja será nula. xdg-openes de hecho el camino a seguir.
MestreLion
15
@MestreLion No creo que la queja sea completamente nula, ya que la apertura de Mac no da como resultado que la salida de la aplicación se repita en el terminal.
Max Nanasy
77
@MaxNanasy: La salida es desde las aplicaciones, no es xdg-openculpa 's si ellos son hablador. Y suprimir tales mensajes debería ser una elección del usuario , no de xdg. Por lo tanto, es un vacío quejarse de pedir algo "mejor" que xdg-open. Además, si Mac openno tiene ninguna opción para enviar esos mensajes, diría que openes mucho peor que eso xdg-open, ya que cuando usa la línea de comandos para iniciar archivos, generalmente está interesado en esa salida (de lo contrario, ¿por qué no hacer doble clic en el archivo? en un navegador como Nautilus?)
MestreLion
12
@MestreLion Aunque se podría argumentar que la queja es trivial, ya que alias open='xdg-open &>/dev/null'produce aproximadamente el comportamiento deseado (aunque también se silenciarían los errores de xdg-open en sí (a diferencia del programa lanzado), lo que es indeseable).
Max Nanasy el
76

El equivalente que está buscando es xdg-open, que se puede usar de la misma manera que el opencomando de OS X. Por ejemplo:

xdg-open ~/Documents/Chubby_Bubbies.odt

Sin embargo, esto es realmente difícil de escribir de forma rápida y precisa. En su lugar, debe hacer un alias para xdg-open, lo que hace que el proceso sea mucho más rápido.

Por supuesto, puedes openusar un alias para que coincida con OS X (puedes elegir lo que quieras), pero personalmente, utilizo el corchete derecho ( ]) para mi acceso directo por razones de velocidad. Para usar esto, agregue lo siguiente a su .bashrcarchivo:

alias ']'='xdg-open'

Luego, para abrir cualquier recurso, úselo como cualquiera de estos ejemplos:

] www.google.com
] file.txt
] ~/Pictures
] ssh://myserver.local/home/jeremy

Además, esto le permite abrir un explorador de archivos (por ejemplo, Nautilus) en el directorio actual:

] .

Por experiencia, he encontrado que los alias de una letra funcionan mejor para el acceso directo anterior. Después de todo, el objetivo es la eficiencia. Y puede regresar y crear el mismo alias en OS X; lo dejo como ejercicio para el lector. :-)

Jeremy Visser
fuente
26
Hice un alias de 'abierto' a 'xdg-abierto' para que sea coherente tanto en Linux como en Mac.
Adam Byrtek el
Eso es bueno pero no excelente, intenté abrir un archivo .url y lo abrí en gedit.
sorin
18
@sorin ¿Estás intentando que suene como si fuera mi culpa?
Jeremy Visser
77
@sorin: xdg-openabre la aplicación predeterminada de su sistema para el archivo. En su caso, los .urlarchivos están configurados para abrirse en gedit. Si desea cambiar eso, haga clic con el botón derecho en el archivo en Nautilus y vaya a Propiedades> Abrir con para cambiar la aplicación predeterminada, y xdg-openfuncionará en consecuencia.
MestreLion
Aquí hay una Gist que hice, solo copie y pegue el comando en la sección 'Totalmente' en el primer comentario.
ozanmuyes
14

Lo resolví yo mismo, así que pensé en escribir cómo lo hice, lo que es específicamente relevante para lo que Suan preguntó. Estos pasos le permiten simplemente escribir "abrir" y no cubrir su terminal con mensajes que no necesita:

Crear un script llamado openen ~/bin, el contenido es simplemente:

xdg-open "$1" &> /dev/null &

Guarde y cierre el script, luego escriba "source .profile" (o .bash_profile si es relevante). Eso es así, escribir "abrir música" abrirá su carpeta de música en la GUI de nautilus y no debería ingresar nada en su terminal.

Anake
fuente
¿Qué pasa con el alias y la ubicación extraña? Simplemente llame al guión en sí openy póngalo en su RUTA (generalmente en $HOME/bin/open)
tripleee
En mi máquina (ubuntu 11.10) si agrega un script llamado 'abierto' a su ruta e intenta hacerlo de esa manera, / bin / open lo anula. Así que no puedo encontrar una manera de llegar a tu trabajo sin un alias.
Anake
El truco es tener su propio script en un directorio que viene más temprano en el PATHque /bin. Por convención, si lo tiene $HOME/bin, se agregaría al comienzo de la RUTA, antes de cualquier directorio del sistema. Comúnmente, esto lo hace tu .profileo similar. Por ejemplo, el valor predeterminado .profileen Ubuntu hace exactamente esto.
tripleee
2
Redirigir la salida a /dev/nulles un poco caprichoso; tal vez podría redirigir la salida $HOME/.xsession-errorso algo así, de modo que los diagnósticos no se pierdan por completo en caso de que necesite solucionar algún problema.
tripleee
1
@efdee: citar correctamente todas las variables es una buena práctica de programación y vital en los scripts de bash. Esto no tiene nada que ver xdg-open, este es un problema de shell.
MestreLion
11

Tradicionalmente, puede usar el comando "ver". Que solo usa run-mailcap. Esto funcionará sin Gnome y X, etc.

man see
Ali Afshar
fuente
3
El problema es run-mailcap(y sus muchos alias) utiliza una base de datos de asociación de aplicaciones separada (y terriblemente desactualizada). Por ejemplo, en mi sistema, mientras que las .mp3canciones se abren correctamente en VLC, los .txtarchivos se abren en menos (en lugar de gedit) y los .pdfarchivos simplemente no se abren. (Error: no se encontraron reglas de vista de correo para el tipo "application / pdf")
MestreLion
Como dije, depende de cada sistema. Pocas aplicaciones se registran de una manera que las run-mailcapreconozca. xdg-openusa internamente gvfs-open(en sistemas Gnome como Ubuntu), que a su vez usa la especificación de mime-database de xdg, que usan muchas más aplicaciones.
MestreLion
Abrí un PDF de más de 50 páginas gimppara mí. Yo me quedo con xdg-open.
user1717828
Abrir archivos txt en lessx''D
Timo
4

gnomo abierto

Ana Betts
fuente
77
gnome-open ahora está en desuso, y además ya lo usaba internamente xdg-opensi el usuario estaba en Gnome (ahora usa gvfs-open)
MestreLion
2

Si tienes tus mimos configurados correctamente, puedes usarlos mimeopen. Echa un vistazo a su página de manual, ya que tiene algunas opciones útiles.

Stacksia
fuente
1
Sería bueno si esta respuesta se ampliara. Me interesaría ver cómo funciona esto
Magnus
-3

En el entorno Gnome Desktop, uso el siguiente comando:

nautilus `pwd` &

Esto es similar a "abierto". comando en Mac

WonderLi
fuente
11
Esta respuesta tiene múltiples problemas: A) Abre el directorio actual, no el archivo, como lo solicitó el usuario. B) puede usar en .lugar de " pwd" C) si cambia pwdpara un archivo, el usuario aún necesitaría presionar ENTER después de que Nautilus abra D) Abrir Nautilus primero solo para que abra el archivo es una solución muy indirecta.
MestreLion