Eu criei um alias
alias rubyserver='ruby -run -e httpd -- -p 5000 . && open localhost:5000'
para iniciar um servidor web e depois abrir a página que é servida pelo servidor. Mas o segundo comando não será executado até que o primeiro comando seja concluído.
Existe uma maneira de executar o comando e, em seguida, começar a executar um segundo, sempre que o primeiro gerar uma determinada string?
O segundo comando deve ser capaz de ver que o primeiro comando é impresso WEBrick::HTTPServer#start
, o que significa que o servidor já está em execução e antes de iniciar.
Responder1
Isso é derivado desta resposta em stackoverflow.com:
Essencialmente,
one_command 2>&1 | tee >(grep -Fq keyword && other_command)
O também 2>&1
é necessário quando você deseja capturar stderr
a saída; se não quiser, deixe-o de fora.
No seu caso, isso deve funcionar:
ruby -run -e httpd -- -p 5000 . 2>&1 \
| tee >(grep -Fq 'WEBrick::HTTPServer#start' && open localhost:5000)