Como canalizar a saída de um comando linux de volta para o comando predecesssing

2

O comando do linux

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

ouve a porta 8090 e quando digito algo como http://127.0.0.1:8090/path/to/nowhere no meu navegador, ele imprime algumas informações sobre a solicitação HTTP no terminal. Eu posso digitar algo na janela do terminal agora que depois de Ctrl + C será mostrado no navegador.

O que eu quero é canalizar a saída dos comandos de eco de volta para o stdin de nc, para que ele seja exibido no navegador. Existe alguma maneira de fazer isso?

    
por jederik 12.10.2012 / 01:33

1 resposta

2

Os pipes nomeados são seus amigos!

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

(testado no OS X 10.8.2, mas deve funcionar em qualquer Unix.)

    
por 12.10.2012 / 01:42