Nuestro grupo de especialistas pasados varios días de trabajo y recopilar de información, dieron con la respuesta, queremos que te sea de gran utilidad para tu proyecto.
Solución:
El propósito principal de OS X open
comando es abrir un archivo en la aplicación asociada. El equivalente de eso en unices modernos que no son OSX es xdg-open
.
xdg-open index.html
xdg-open
no tiene un equivalente de OSX open -a
para abrir un archivo en una aplicación específica. Esto se debe a que la forma normal de abrir un archivo en una aplicación es simplemente escribir el nombre de la aplicación seguido del nombre del archivo. Más precisamente, debe escribir el nombre del programa ejecutable que implementa la aplicación.
sublime_text index.html
Linux, al igual que otros sistemas Unix (pero no, que yo sepa, las partes que no son Unixy de OS X) administra el software al rastrearlo con un administrador de paquetes y coloca los archivos individuales donde se usan. Por ejemplo, todos los programas ejecutables están en un pequeño conjunto de directorios y todos esos directorios se enumeran en el PATH
variable; correr sublime_text
busca un archivo llamado sublime_text
en los directorios listados en PATH
. OS X necesita un nivel adicional de indirección, a través de open -a
, para manejar aplicaciones que se desempaquetan en un único árbol de directorios y se registran en una base de datos de aplicaciones. Linux no tiene ninguna base de datos de aplicaciones, pero está organizada de tal manera que no la necesita.
Si ejecuta el comando sublime_text
shell no funciona para usted, entonces Sublime Text no se ha instalado correctamente. Nunca lo he usado y, aparentemente, viene como un archivo tar, no como un paquete de distribución (por ejemplo, deb o rpm), por lo que es posible que necesite realizar un paso de instalación adicional. Es realmente el trabajo de los creadores de Sublime Text hacer que esto sea automático, pero si no lo han hecho, probablemente pueda hacerlo usted mismo ejecutando el comando
sudo -s …/sublime_text /usr/local/bin
Reemplazar …
por el camino donde el sublime_text
ejecutable es, por supuesto.
los open
comando que encontraste es un nombre antiguo para el openvt
comando (algunas distribuciones de Linux solo lo incluyen bajo el nombre openvt
). los openvt
El comando crea una nueva consola virtual, que solo puede ser ejecutada por root y no se usa muy a menudo en este siglo, ya que la mayoría de las personas solo trabajan en un entorno de ventana gráfica.
No mencionas el sistema operativo que estás usando.
En algunas distribuciones de Linux, el open
comando es un enlace simbólico a la
openvt
comando que abre un binario en una nueva consola virtual. Eso aparentemente no es lo que quieres. De hecho, sus mensajes de error indican que invocó el openvt
dominio. Este comando espera un programa binario (un ejecutable) como argumento.
Supongo que te refieres xdg-open
que, a diferencia de openvt
, no espera un ejecutable como argumento, sino un archivo que está asociado con un programa y abre el archivo con el programa. Puede pasar archivos y URL como argumentos.
Por lo tanto xdg-open index.html
debe abrir el archivo en su navegador,
xdg-open image.png
debe abrir el archivo en su visor de imágenes, etc.
Aunque la gente a menudo nombra xdg-open
como emular la funcionalidad de open
Mac OS open
es un poco diferente porque 1. no redirige nada desde stdout/stedrr y 2. separa lo que quieras ejecutar desde la terminal (que es casi siempre lo que quieres cuando inicias aplicaciones GUI para que no tengas terminales por ahí )
Para resolver esto, se me ocurrió un equivalente adecuado utilizando algunas herramientas GNU estándar (la sintaxis es cáscara de pez, pero la conversión a bash es trivial):
function open
for i in $argv
setsid nohup xdg-open $i > /dev/null 2> /dev/null
end
end
Adicional:
Para aquellos que usan bash shell, aquí está la función:
open ()
for i in $*
do
setsid nohup xdg-open $i > /dev/null 2> /dev/null
done
Comentarios y calificaciones
Si te ha resultado de utilidad nuestro post, sería de mucha ayuda si lo compartes con más desarrolladores de este modo contrubuyes a difundir nuestra información.