Ok, entonces correr gedit myfile.txt
funciona bien. Pero, ¿qué hay de abrir un archivo desde un script bash, usando la aplicación de escritorio predeterminada vinculada al tipo de archivo?
Lo he intentado a continuación, lo que funciona muy bien cuando se ejecuta manualmente en la terminal, pero cuando lo pongo en un archivo bash, no sucede nada:
#!/bin/bash
xdg-open "myfile.txt"&
¿Qué debo hacer en su lugar?
Tenga en cuenta que también necesito que el archivo permanezca abierto después de que se cierre el terminal.
gedit
con el archivo enumerado (o abre una nueva pestaña en una sesión existente). Sin embargo, vuelve inmediatamente, en lugar de bloquear hasta que el programa salga.xtg-open
en*.txt
,*.html
y más - simplemente no funcionará.Respuestas:
Creo que tu guión debería funcionar. Pero puede agregarle algo para obtener un poco más de información:
al ejecutar este script (llamado my_open.sh) en una terminal como esta:
Me sale el siguiente resultado:
lo que me dice que la ruta al archivo está bien, se reconoce el tipo MIME y el archivo de escritorio que se utiliza para abrir el archivo también está bien. Y gedit se abre con el archivo en cuestión.
Ahora cuando se ejecuta en otro archivo:
Me sale el siguiente resultado:
Tenga en cuenta los diferentes tipos MIME y el archivo de escritorio que falta. Sin embargo, xdg-open abre el valor predeterminado para todos los archivos de texto (gedit).
Por lo tanto, es posible que desee agregar algo como esto a su script y ver si obtiene un resultado inesperado (que luego puede agregar a su pregunta ...).
fuente
finished script
al final. Recomiendo [ catb.org/~esr/writings/taoup/html/font>(The art of Unix Programming), la regla del silencio. Por cierto: los backticks están en desuso; prefiera $ (...) en su lugar, que es anidable.nohup
o&
, pero quexdg-open
regresa y le permite continuar.xdg-open
ya lo hace, así que esto no es un script de calidad de la producción de todos modos ...Hacer un script bash test.sh como:
Luego, haga que el script sea ejecutable como:
Finalmente, ejecute el script como:
fuente
Quizás gnome-open en lugar de xdg-open
fuente
Estás yendo en la dirección correcta. Si desea que la aplicación GUI permanezca abierta cuando cierra la ventana del terminal, entonces solo necesita agregar una
nohup
al comienzo de la línea.Si la aplicación GUI no se abre, probablemente sea porque no tiene la
DISPLAY
variable de entorno establecida en el shell desde el que está intentando iniciarla. Intenta hacer un eco$DISPLAY
fuente
nohup
ni&
La primera parte de tu pregunta.
con el comando
cat
puede abrir un archivo dentro del terminal, si eso es lo que desea (se indica en la primera parte de su pregunta).para usarlo solo puedes escribir
cat FILENAME
.Otra información
Si necesita más comandos: aquí hay una buena lista de comandos.
Editor predeterminado de GNOME
Si desea abrir el archivo en la aplicación predeterminada de GNOME
gedit
.para usarlo, solo escribe
gedit FILENAME
fuente
gedit file.filetype
, ¡abrirá el archivo como desee!Si bien no estoy seguro de lo que realmente se debe lograr aquí y en base a algunos comentarios recientes, un solo script debe abrir CUALQUIER archivo en la aplicación predeterminada o, en cierta medida, la aplicación lo admite.
Si es así , la forma más fácil de hacerlo sería abriendo un terminal y yendo scriptname / path / to / filename o si hay espacios en la ruta, entonces scriptname '/ path / to / filename'
Use esto como secuencia de comandos, puede usar cualquier nombre que desee para la secuencia de comandos, usaré openit1 como ejemplo. Es mejor cuando se usan scripts directamente desde ~ / bin para agregar un número al nombre para que no haya conflictos con los comandos de Linux existentes.
Cerrar gedit y en la terminal
Reinicie para agregar ~ / bin a su $ PATH
Para invocar abra una terminal y vaya
SI como el origen declarado y utilizando el origen. guión para un archivo en particular por guión e invocación por d. haciendo clic izquierdo en el script solo necesita elegir " Ejecutar " en lugar de "Ejecutar en la Terminal"
fuente
Restart to add ~/bin to your $PATH
- Uhm, viejos hábitos de Windows? ;)