エイリアスを作成しました
alias rubyserver='ruby -run -e httpd -- -p 5000 . && open localhost:5000'
Web サーバーを起動し、サーバーによって提供されるページを開きます。ただし、最初のコマンドが完了するまで 2 番目のコマンドは実行されません。
最初のコマンドが特定の文字列を出力するたびに、コマンドを実行し、2 番目のコマンドの実行を開始する方法はありますか?
WEBrick::HTTPServer#start
2 番目のコマンドは、最初のコマンドが を出力していること、つまりサーバーがすでに実行中であること、および起動前に であることを確認できる必要があります。
答え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)