¿Por qué no puedo ejecutar este comando en mi terminal?
open index.html
¿No se suponía que abría este archivo en mi navegador? También no puedo ejecutar este comando: open index.html -a "Sublime Text". El resultado de estos comandos son:
$ open index.html
Couldn't get a file descriptor referring to the console
$ open index.html -a "Sublime Text" -
open: invalid option -- 'a'
Usage: open [OPTIONS] -- command
command-line
file-opening
Edgar Oliveira
fuente
fuente

xdg-opencuál debería abrir el archivo en tu navegador. Elopencomando es un enlace alopenvtcomando y abre un binario en una nueva consola virtual. Al parecer, eso no es lo que quieres.opencomando en Linux.opencomando en Linux, vinculado aopenvt; Los mensajes de error en la pregunta son consistentes con esa situación.xdg-open <file>y debería abrir el archivo con el programa correspondiente.Respuestas:
El propósito principal del
opencomando de OS X es abrir un archivo en la aplicación asociada. El equivalente de eso en los equipos modernos que no son OSX esxdg-open.xdg-openno tiene un equivalente de OSXopen -apara 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.Linux, como otros sistemas Unix (pero no, hasta donde yo sé, 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 están listados en la
PATHvariable ; ejecutandosublime_textbusca un archivo llamadosublime_texten los directorios listados enPATH. OS X necesita un nivel adicional de indirección, a travésopen -a, para manejar aplicaciones que se desempaquetan en un solo á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 necesita una.Si ejecutar el comando
sublime_textshell 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 necesites hacer un paso adicional de instalación. Realmente es 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 comandoReemplazar
…por la ruta donde está elsublime_textejecutable, por supuesto.El
opencomando que encontró es un nombre anterior para elopenvtcomando (algunas distribuciones de Linux solo lo incluyen bajo el nombreopenvt). Elopenvtcomando crea una nueva consola virtual , que solo puede ser realizada por root y no se usa con mucha frecuencia en este siglo, ya que la mayoría de las personas solo trabajan en un entorno de ventana gráfica.fuente
No mencionas el sistema operativo que estás utilizando.
En algunas distribuciones de Linux, el
opencomando es un enlace simbólico alopenvtcomando que abre un binario en una nueva consola virtual. Al parecer, eso no es lo que quieres. Sus mensajes de error indican que invocó elopenvtcomando. Este comando espera un programa binario (un ejecutable) como argumento.Supongo que quiere decir
xdg-openque, en contraste conopenvt, 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
xdg-open index.htmllo tanto, debe abrir el archivo en su navegador,xdg-open image.pngdebe abrir el archivo en su visor de imágenes, etc.fuente
xdg-openllamada es invocar la aplicación predeterminada para ese archivo. Si desea utilizar un programa diferente, solo llame<program> <file>. No veo el problema.open index.html -a "Sublime Text" -por eso digo "problema", porque si usasxdg-openpara abrir un archivo html, hay muchas posibilidades de que el navegador abra el archivo y no un editor de texto como "Sublime Text"Aunque las personas a menudo
xdg-openlo llaman como emulando la funcionalidad deopen, macOSopenes un poco diferente porque 1. no redirige nada desde stdout / stedrr y 2. desconecta lo que desea ejecutar desde el terminal (que es casi siempre lo que desea al iniciar la GUI aplicaciones para que no tenga terminales por ahí)Para resolver esto, he encontrado un equivalente apropiado usando algunas herramientas GNU estándar (la sintaxis es fish shell, pero la conversión a bash es trivial):
Añadido :
Para aquellos que usan el shell bash, aquí está la función:
fuente
Mi solución (utilizada a diario) es usar un
aliasforxdg-open.Solo pon esto en tu
~/.bashrc:Luego cierre y reinicie su shell o
source ~/.bashrc.Ahora puede abrir cualquier archivo con ese comando ... desde .png a .jpg a .docx a .pdf a .txt.
fuente