별칭을 만들었어요
alias rubyserver='ruby -run -e httpd -- -p 5000 . && open localhost:5000'
그러면 웹 서버가 시작되고 서버에서 제공하는 페이지가 열립니다. 그러나 두 번째 명령은 첫 번째 명령이 완료될 때까지 실행되지 않습니다.
해당 명령을 실행한 다음 첫 번째 명령이 특정 문자열을 출력할 때 두 번째 명령 실행을 시작하는 방법이 있습니까?
두 번째 명령은 첫 번째 명령의 print out 을 볼 수 있어야 합니다 WEBrick::HTTPServer#start
. 이는 서버가 시작되기 전에 이미 실행 중임을 의미합니다.
답변1
이는 stackoverflow.com의 다음 답변에서 파생되었습니다.
본질적으로,
one_command 2>&1 | tee >(grep -Fq keyword && other_command)
2>&1
이는 출력을 캡처하려는 경우에도 필요하며 stderr
원하지 않으면 무시하십시오.
귀하의 경우에는 다음과 같이 작동합니다.
ruby -run -e httpd -- -p 5000 . 2>&1 \
| tee >(grep -Fq 'WEBrick::HTTPServer#start' && open localhost:5000)