flui o stdout de um comando e mescla com stdin do terminal para um único stdout

2

Esta resposta mostra várias maneiras de transmitir vários comandos para outro comando, mas como eles usam subshells que você não pode fazer stdin.

Enquanto você pode conseguir isso com pipes nomeados, é um pouco feio e pode deixar os processos que sobram depois:

$ mkfifo p
$ while :; do sleep 5s; echo save; done > p &
$ cat p > output &
$ cat </dev/stdin > p
test
asdf
woot
^C
$ cat output
save
test
asdf
save
save
woot
save
$ jobs
[1]-  Running                 while :; do
    sleep 5s; echo save;
done > p &
[2]+  Running                 cat p > output &

Existe uma maneira de fazer isso em um único comando? Idealmente, eu gostaria de algo ao longo das linhas:

someutil <(while :; do sleep 5s; echo save; done) /dev/stdin > output

Dessa forma, posso canalizar a saída para outro comando em vez de um arquivo.

    
por J V 07.01.2018 / 00:16

0 respostas