エイリアスを作成しました。
alias rubyserver='ruby -run -e httpd -- -p 5000 . && open localhost:5000'
これにより、Webサーバーが起動し、サーバーが提供するページが開きます。ただし、2番目のコマンドは、最初のコマンドが完了するまで実行されません。
そのコマンドを実行してから、最初のコマンドが特定の文字列を出力するときに2番目のコマンドの実行を開始する方法はありますか?
2番目のコマンドは、最初のコマンドの印刷アウトを見ることができるはずです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)