Wie wird die Ausgabe eines Linux-Befehls in den vorherigen Befehl zurückgeleitet?

1508
jederik

Der Linux-Befehl

nc -l 8090 | (read METHOD URI PROTOCOL ; echo "method: $METHOD" ; echo "path: $URI" ; echo "prot: $PROTOCOL") 

Hört Port 8090 und wenn ich etwas http://127.0.0.1:8090/path/to/nowherein meinen Browser eingebe, werden einige Informationen über den HTTP-Request im Terminal ausgegeben. Ich kann jetzt im Terminalfenster etwas eingeben, das nach dem Drücken von Strg + C im Browser angezeigt wird.

Was ich möchte, ist, die Ausgabe der Echobefehle zurück zum Stdin von nc zu leiten, damit sie im Browser angezeigt wird. Gibt es eine Möglichkeit, dies zu tun?

2

1 Antwort auf die Frage

2
Alan Shutko

Named pipes are your friend!

mkfifo ncloop nc -l 8090 < ncloop | (read METHOD URI PROTOCOL ; echo "method: $METHOD" ; echo "path: $URI" ; echo "prot: $PROTOCOL") > ncloop 

(Tested in OS X 10.8.2 but should work on any Unix.)