Pregunta Ejecutar comando después de que el anterior haya terminado


¿Hay un emulador de terminal que permita al usuario ejecutar un comando después de que termine el que se está ejecutando actualmente?

Estoy buscando un software, no una explicación de cómo concatenar comandos (por ejemplo, a través de && o ;) Es solo que a menudo quiero hacer algo después de que algo más terminó pero no planifico todo lo que tengo por delante. Una pequeña entrada del menú contextual llamada "ejecutar después de que el comando actual finalizó" abriendo una nueva ventana de terminal que hace exactamente eso sería increíble.


0


origen




Respuestas:


Supongo que está utilizando una CLI de Bash. Hay al menos dos formas de hacerlo, dependiendo de cuánto desea planear con anticipación.

Si escribe un comando y entrar, y luego decide que quieres ejecutar algún otro comando cuando eso termine, puedes hacer esto:

001 $ date; sleep 10
002 Mon, Jan 25, 2016  3:08:35 PM
003 tty; date
004 $ tty; date
005 /dev/pty2
006 Mon, Jan 25, 2016  3:08:45 PM

Notas:

  • Se agregan los números de línea ("001 ...")
  • Línea 001: dos comandos se ejecutan secuencialmente debido a ;, el segundo es de larga duración
  • Línea 002: el resultado inmediato de 'fecha' en la línea 001, para referencia
  • Línea 003: el usuario escribe comandos adicionales mientras el comando 'dormir' de la línea 001 aún se está ejecutando, la escritura se repite, pero no se interpreta hasta que se complete 'dormir'
  • Línea 004: ps aparece el mensaje que indica la ejecución del segundo comando en la línea 001, el resto es un eco de la línea 003.
  • Línea 005: Salida del comando 'tty' ingresado en la línea 003
  • Línea 006: Salida del comando 'fecha' ingresado en la línea 003, compare con la línea 002

Sin embargo, si sabe de antemano que querrá comenzar algo más después de un comando inicial, pero aún no sabe qué, puede esperarlo explícitamente como sigue:

006 $ date; sleep 20 &
007 Mon, Jan 25, 2016  3:13:52 PM
008 [1] 504840
009 $ wait 504840; tty; date
010 [1]+  Done                    sleep 20
011 /dev/pty2
012 Mon, Jan 25, 2016  3:14:12 PM

Notas:

  • Línea 006: 'fecha' para referencia, y luego el comando 'dormir' es empujado al fondo con final &
  • Línea 007: salida de 'fecha' en la línea 006, para referencia
  • Línea 008: salida de & en la línea 006, dando el PID del comando 'dormir'
  • Línea 009: 'esperar' esperará el proceso con el PID nombrado para completar
  • Línea 010: 'dormir' en la línea 006 completa, luego 'tty; fecha 'será interpretada
  • Línea 011: salida de 'tty' en la línea 009
  • Línea 012: salida de 'fecha' en la línea 009, compare con la línea 007

0





Puede escribir o pegar su nuevo comando en la ventana del shell donde se está ejecutando el comando actual y el shell lo verá y ejecutará una vez que finalice el comando actual.

No se necesita entrada de menú adicional.

P.ej.:

$ command1
command2
$ $

(el mensaje repetido se imprime porque el shell le preguntará después de ejecutar command1 antes de empezar command2)

Tenga en cuenta que si mata command1 con kill, entonces command2 se ejecuta de inmediato, pero si escribe Ctrl-C en este shell, esto abortará ambos comandos.


0