É possível adicionar um comando para ser executado quando um comando atualmente em execução é concluído?

1

Ao executar processos demorados no terminal, eu gosto de adicionar algo como say "done" como um comando adicional para que eu possa ser alertado quando o processo atual terminar. Por exemplo:

$ do_this_long_thing; say "done";

Funciona muito bem. Mas às vezes eu esqueço o comando say "done" , apenas para percebê-lo uma vez que o comando longo já está em execução. Existe uma maneira de adicionar esse comando adicional à fila depois que um comando já estiver em execução?

    
por maxedison 14.08.2015 / 16:42

2 respostas

2

No terminal que está executando o comando de longa duração, apenas digite say done e aperte enter. Quando o comando de longa duração terminar, o shell executará o que você digitou como o próximo comando a ser executado. Isso pressupõe que o comando de longa execução não precisará ler nada do stdin,

    
por glenn jackman 14.08.2015 / 18:53
4
  

Minhas soluções são: suspenda sua tarefa de longa duração com Control + Z,   então digite algo como:

fg; echo "Done!"
     

Se você deseja executar reagir de maneira diferente com base no sucesso ou fracasso   de seu comando, use & amp; & amp; e || como operadores de curto-circuito.

fg && echo "Success!" || echo "Failure!"

Fonte: Como executar o comando após o comando atual em execução no bash?

    
por David Foerster 14.08.2015 / 22:51