Creé un alias
alias rubyserver='ruby -run -e httpd -- -p 5000 . && open localhost:5000'
para iniciar un servidor web y luego abrir la página servida por el servidor. Pero el segundo comando no se ejecutará hasta que finalice el primer comando.
¿Hay alguna manera de ejecutar el comando y luego comenzar a ejecutar un segundo, siempre que el primero haya generado una determinada cadena?
El segundo comando debe poder ver que el primer comando imprime WEBrick::HTTPServer#start
, lo que significa que el servidor ya está ejecutándose y antes de comenzar.
Respuesta1
Esto se deriva de esta respuesta en stackoverflow.com:
Esencialmente,
one_command 2>&1 | tee >(grep -Fq keyword && other_command)
También es 2>&1
necesario cuando desea capturar stderr
la salida; si no lo desea, omítalo.
En tu caso esto debería funcionar:
ruby -run -e httpd -- -p 5000 . 2>&1 \
| tee >(grep -Fq 'WEBrick::HTTPServer#start' && open localhost:5000)