Executar comando após a conclusão do anterior

Executar comando após a conclusão do anterior

Existe um emulador de terminal que permite ao usuário executar um comando após o término do comando atualmente em execução?

Estou procurando um software, não uma explicação de como concatenar comandos (por exemplo via &&ou ;). Acontece que muitas vezes quero fazer algo depois de terminar outra coisa, mas não planejo tudo com antecedência. Uma pequena entrada no menu de contexto chamada "executar após a conclusão do comando atual", abrindo uma nova janela de terminal que faz exatamente isso, seria incrível.

Responder1

Presumo que você esteja usando um Bash CLI. Existem pelo menos duas maneiras de fazer isso, dependendo de quanto você deseja planejar com antecedência.

Se você digitar um comando e entere decidir executar algum outro comando quando terminar, poderá fazer o seguinte:

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:

  • Números de linha ("001 ...") são adicionados
  • Linha 001: dois comandos são executados sequencialmente devido a ;, o segundo é de longa duração
  • Linha 002: a saída imediata de 'data' na linha 001, para referência
  • Linha 003: O usuário digita comandos adicionais enquanto o comando 'sleep' da linha 001 ainda está em execução, a digitação é repetida, mas não é interpretada até que 'sleep' seja concluído
  • Linha 004: $prompt aparece marcando o fim da execução do segundo comando na linha 001, o restante é o re-eco da linha 003.
  • Linha 005: Saída do comando 'tty' inserido na linha 003
  • Linha 006: Saída do comando 'data' inserido na linha 003, compare com a linha 002

No entanto, se você sabe com antecedência que deseja iniciar outra coisa após um comando inicial, mas ainda não sabe o quê, pode esperar explicitamente 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:

  • Linha 006: 'data' para referência e, em seguida, o comando 'sleep' é colocado em segundo plano com final&
  • Linha 007: saída de 'data' na linha 006, para referência
  • Linha 008: saída da &linha 006, fornecendo PID do comando 'sleep'
  • Linha 009: 'wait' aguardará a conclusão do processo com PID nomeado
  • Linha 010: 'sleep' na linha 006 é concluído, depois 'tty; data' será interpretada
  • Linha 011: saída de 'tty' na linha 009
  • Linha 012: saída de 'data' na linha 009, compare com a linha 007

Responder2

Você pode digitar ou colar seu novo comando na janela do shell onde o comando atual está sendo executado e o shell irá vê-lo e executá-lo após a conclusão do comando atual.

Nenhuma entrada de menu adicional é necessária.

Por exemplo:

$ command1
command2
$ $

(o prompt repetido é impresso porque o shell irá avisá-lo após a execução command1antes de iniciar command2).

Observe que se você matar command1comkill, então command2é executado imediatamente, mas se você digitar Ctrl-Cneste shell, isso irá abortaramboscomandos.

informação relacionada