¿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-open
cuál debería abrir el archivo en tu navegador. Elopen
comando es un enlace alopenvt
comando y abre un binario en una nueva consola virtual. Al parecer, eso no es lo que quieres.open
comando en Linux.open
comando 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
open
comando 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-open
no tiene un equivalente de OSXopen -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.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
PATH
variable ; ejecutandosublime_text
busca un archivo llamadosublime_text
en 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_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 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_text
ejecutable, por supuesto.El
open
comando que encontró es un nombre anterior para elopenvt
comando (algunas distribuciones de Linux solo lo incluyen bajo el nombreopenvt
). Elopenvt
comando 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
open
comando es un enlace simbólico alopenvt
comando que abre un binario en una nueva consola virtual. Al parecer, eso no es lo que quieres. Sus mensajes de error indican que invocó elopenvt
comando. Este comando espera un programa binario (un ejecutable) como argumento.Supongo que quiere decir
xdg-open
que, 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.html
lo tanto, debe abrir el archivo en su navegador,xdg-open image.png
debe abrir el archivo en su visor de imágenes, etc.fuente
xdg-open
llamada 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-open
para 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-open
lo llaman como emulando la funcionalidad deopen
, macOSopen
es 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
alias
forxdg-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