Me gustaría canalizar una salida a dos comandos separados <2,3> en bash. Cual es la mejor manera de hacer esto? Por el momento, tengo el siguiente script:
command source > output
command2 output &
command3 output &
El archivo de salida es ~100G y una forma subóptima sería canalizar los comandos 2 y 3 por separado. Creo que es posible hacerlo aún más eficientemente.
Respuesta1
En fiesta:command source | tee >(command2) >(command3)
Deestepregunta de desbordamiento de pila. No he probado esto con resultados descomunales.
Respuesta2
Otras respuestas introducen el concepto. Aquí hay una demostración 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
Por supuesto que puedes > /dev/null
en lugar de out3.