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?

Eugene M
fuente

Respuestas:

23

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:

xterm -e "mycommand" hold
Oli
fuente
77
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.

Richard Holloway
fuente
1
+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..."
Jukka Matilainen
8

En su acceso directo .desktop, use esto

Exec=gnome-terminal -x bash -c "YOUR_SCRIPT; exec $SHELL"

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:

Exec=gnome-terminal -x bash -c "YOUR_SCRIPT \"arg with spaces\"; exec $SHELL"
mivk
fuente
3

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

#!/bin/sh
[ $# -eq 0 ] && {
  echo "$(basename $0): no command" >&2
  exit 1
}
"$@" || {
  echo "failed: $?"
  exec $SHELL
}

Coloque este archivo en algún lugar, como ~ / bin, luego use "success-or-shell your original command" en su lanzador.


fuente
0

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
Brian Vandenberg
fuente
0

Usa el watchcomando.

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.

Gabriel Staples
fuente
0

Intente hacer clic derecho en el iniciador e ingresar propiedades.

Debería haber una opción para mantener abierta la ventana del terminal ingrese la descripción de la imagen aquí

En el archivo .desktop, debe haber la entrada X-KeepTerminal=true

Nathanfranke
fuente