No bash: command source | tee >(command2) >(command3)
De esta pergunta do stackoverflow. Eu não tentei isso com saídas gigantescas.
Eu gostaria de enviar uma saída de dois comandos separados < 2,3 > no bash. Qual a melhor maneira para fazer isto? No momento, tenho o seguinte script:
command source > output
command2 output &
command3 output &
O arquivo de saída é ~ 100G e uma maneira sub-ótima seria canalizar para os comandos 2 e 3 separadamente. Eu acho que é possível fazer ainda mais eficientemente.
No bash: command source | tee >(command2) >(command3)
De esta pergunta do stackoverflow. Eu não tentei isso com saídas gigantescas.
Outras respostas apresentam o conceito. Aqui está uma demonstração real:
$ echo "Leeroy Jenkins" | tee >(md5sum > out1) >(sha1sum > out2) > out3
$ cat out1
11e001d91e4badcff8fe22aea05a7458 -
$ echo "Leeroy Jenkins" | md5sum
11e001d91e4badcff8fe22aea05a7458 -
$ cat out2
5ed25619ce04b421fab94f57438d6502c66851c1 -
$ echo "Leeroy Jenkins" | sha1sum
5ed25619ce04b421fab94f57438d6502c66851c1 -
$ cat out3
Leeroy Jenkins
É claro que você pode > /dev/null
em vez de out3.