Con un lanzador para una aplicación de terminal, ¿cómo puedo mantener el terminal abierto después de que se complete el programa?
24
Tengo un comando de terminal que ejecuto desde un iniciador de aplicaciones. Esto funciona muy bien, sin embargo, a veces el comando falla, por lo que me gustaría que el terminal permanezca abierto para poder ver los resultados. ¿Cómo puedo hacer esto?
Suponiendo que se llame a su comando mycommand, cambiaría mi lanzador para ejecutar esto:
gnome-terminal -e "mycommand|less"
Si desea una solución más permanente, quizás más limpia, abra gnome-terminal, vaya a Editar, Preferencias de perfil y haga clic en la pestaña Título y comando. Cambie la opción "Cuando el comando sale" a "Mantener el terminal abierto".
Cuando ejecuta comandos, ahora debe dejar el terminal abierto cuando algo se ejecuta.
Editar: Si realmente no te importa la terminal, puedes usar la bandera de espera de xterm:
Para mantener la acción predeterminada de terminal 'cuando el comando sale', sugiero crear un nuevo perfil de terminal, configurarlo para que permanezca abierto después de que un comando salga y pasar la --tab-with-profile=PROFILENAMEopción gnome-terminal . Puede tener muchos perfiles para diferentes comportamientos de esta manera :-)
invierta el
1
xterm -hold -e mycommand
8
Su lanzador está ejecutando un script ¿verdad?
Al final de su script agregue
read -p "Press any key to exit > " -n1 junk
echo
Entonces su script esperará hasta que elija finalizarlo.
+1, y mostrar el mensaje solo si el comando falla (devuelve un código de salida distinto de cero) que uno podría hacercommand || read -n1 -p "Command failed. Press any key to exit..."
Un enfoque ligeramente diferente de las otras respuestas: ejecuta tu comando y, si eso falla, genera un shell. De esta manera, no tiene que mantener abierto el terminal (que no distingue entre el éxito o el fracaso del comando), y puede encontrar que ese shell es particularmente útil en caso de error. Para cerrarlo, simplemente use Ctrl-D (EOF), "salir", Alt-F4 (o lo que sea que su administrador de ventanas use para cerrar ventanas), etc.
Esta respuesta da la mejor respuesta que he visto hasta ahora para hacer lo que quieres. Recomiendan hacer un script con los comandos para ejecutar y usarlo con el parámetro --init-file (bash específico, pero probablemente podría hacer lo mismo para csh / tcsh / zsh, etc.):
#!/bin/bash --init-file
commands to run
... y ejecutarlo como:
xterm -e /path/to/script
# or
gnome-terminal -e /path/to/script
# or
the-terminal -e bash --init-file /path/to/script/with/no/shebang
Formato: watch -n60 myCommandowatch -n60 "my command string"
el -nespecificado el número de segundos para esperar entre llamadas a myCommand ; Ej: el comando anterior llamará a myCommand cada 60 segundos, para siempre.
Si el comando es varias palabras, lo puso dentro de comillas dobles: "my command string".
Supongamos que desea un Iniciador que muestre el uso del disco y permanezca abierto para que el lector lo vea. Simplemente usaría este comando dentro del Lanzador: watch -n60 "df -h"que llama df -hahora cada 60 segundos.
Me gusta esto sobre la respuesta aceptada de gnome-terminal -e "mycommand|less"porque estoy ejecutando Xubuntu, que utiliza un terminal diferente por defecto.
--tab-with-profile=PROFILENAME
opción gnome-terminal . Puede tener muchos perfiles para diferentes comportamientos de esta manera :-)xterm -hold -e mycommand
Su lanzador está ejecutando un script ¿verdad?
Al final de su script agregue
Entonces su script esperará hasta que elija finalizarlo.
fuente
command || read -n1 -p "Command failed. Press any key to exit..."
En su acceso directo .desktop, use esto
Una vez que haya finalizado su secuencia de comandos, el proceso Bash se reemplazará con una nueva invocación de sí mismo.
Si necesita pasar argumentos entrecomillados a su script, debe escapar de las comillas:
fuente
Un enfoque ligeramente diferente de las otras respuestas: ejecuta tu comando y, si eso falla, genera un shell. De esta manera, no tiene que mantener abierto el terminal (que no distingue entre el éxito o el fracaso del comando), y puede encontrar que ese shell es particularmente útil en caso de error. Para cerrarlo, simplemente use Ctrl-D (EOF), "salir", Alt-F4 (o lo que sea que su administrador de ventanas use para cerrar ventanas), etc.
éxito o concha
Coloque este archivo en algún lugar, como ~ / bin, luego use "success-or-shell your original command" en su lanzador.
fuente
Esta respuesta da la mejor respuesta que he visto hasta ahora para hacer lo que quieres. Recomiendan hacer un script con los comandos para ejecutar y usarlo con el parámetro --init-file (bash específico, pero probablemente podría hacer lo mismo para csh / tcsh / zsh, etc.):
... y ejecutarlo como:
fuente
Usa el
watch
comando.Formato:
watch -n60 myCommand
owatch -n60 "my command string"
-n
especificado el número de segundos para esperar entre llamadas a myCommand ; Ej: el comando anterior llamará a myCommand cada 60 segundos, para siempre."my command string"
.Supongamos que desea un Iniciador que muestre el uso del disco y permanezca abierto para que el lector lo vea. Simplemente usaría este comando dentro del Lanzador:
watch -n60 "df -h"
que llamadf -h
ahora cada 60 segundos.Me gusta esto sobre la respuesta aceptada de
gnome-terminal -e "mycommand|less"
porque estoy ejecutando Xubuntu, que utiliza un terminal diferente por defecto.fuente
Intente hacer clic derecho en el iniciador e ingresar propiedades.
Debería haber una opción para mantener abierta la ventana del terminal
En el archivo .desktop, debe haber la entrada
X-KeepTerminal=true
fuente