Ejecutar comando después de finalizar el anterior

Ejecutar comando después de finalizar el anterior

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

Estoy buscando un software, no una explicación de cómo concatenar comandos (por ejemplo, mediante &&o ;). Es sólo que a menudo quiero hacer algo después de haber terminado otra cosa, pero no planeo todo con anticipación. Una pequeña entrada del menú contextual llamada "ejecutar después de finalizar el comando actual" que abre una nueva ventana de terminal que hace exactamente eso sería increíble.

Respuesta1

Supongo que estás utilizando una CLI de Bash. Hay al menos dos formas de hacer esto, dependiendo de cuánto desee planificar con anticipación.

Si escribe un comando y entery luego decide que desea ejecutar algún otro comando cuando finalice, puede 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 añaden números de línea ("001...")
  • Línea 001: dos comandos se ejecutan secuencialmente debido a que ;el segundo es de ejecución prolongada
  • Línea 002: la salida inmediata de 'fecha' en la línea 001, como 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 completa 'dormir'
  • Línea 004: $aparece un mensaje que marca el final de 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, comparar con la línea 002

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

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' como referencia, y luego el comando 'dormir' se pasa a un segundo plano con final&
  • Línea 007: salida de 'fecha' en la línea 006, como referencia
  • Línea 008: salida de &la línea 006, que proporciona el PID del comando 'dormir'
  • Línea 009: 'esperar' esperará a que se complete el proceso con el PID nombrado
  • Línea 010: se completa 'sleep' en la línea 006, 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, comparar con la línea 007

Respuesta2

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 lo ejecutará una vez que finalice el comando actual.

No se necesita ninguna entrada de menú adicional.

P.ej:

$ command1
command2
$ $

(El mensaje repetido se imprime porque el shell le avisará después de ejecutar command1antes de comenzar command2).

Tenga en cuenta que si mata command1conkill, luego command2se ejecuta de inmediato, pero si escribe Ctrl-Cen este shell, esto abortaráamboscomandos.

información relacionada