Ich habe einen Alias erstellt
alias rubyserver='ruby -run -e httpd -- -p 5000 . && open localhost:5000'
um einen Webserver zu starten und dann die vom Server bereitgestellte Seite zu öffnen. Der zweite Befehl wird jedoch erst ausgeführt, wenn der erste Befehl abgeschlossen ist.
Gibt es eine Möglichkeit, den Befehl auszuführen und dann einen zweiten auszuführen, wenn der erste eine bestimmte Zeichenfolge ausgegeben hat?
Der zweite Befehl muss erkennen können, dass der erste Befehl ausgibt WEBrick::HTTPServer#start
, was bedeutet, dass der Server bereits läuft und bevor er gestartet wird.
Antwort1
Dies leitet sich aus dieser Antwort auf stackoverflow.com ab:
Im Wesentlichen,
one_command 2>&1 | tee >(grep -Fq keyword && other_command)
Dies 2>&1
wird benötigt, wenn Sie auch die Ausgabe erfassen möchten stderr
. Wenn Sie das nicht möchten, lassen Sie es weg.
In Ihrem Fall sollte dies funktionieren:
ruby -run -e httpd -- -p 5000 . 2>&1 \
| tee >(grep -Fq 'WEBrick::HTTPServer#start' && open localhost:5000)