Я хотел бы передать вывод на две отдельные команды <2,3> в bash. Как лучше всего это сделать? На данный момент у меня есть следующий скрипт:
command source > output
command2 output &
command3 output &
Выходной файл составляет ~100G, и неоптимальным способом было бы передать его по отдельности командам 2 и 3. Я думаю, что можно сделать даже более эффективно.
решение1
В Баше:command source | tee >(command2) >(command3)
ОтэтотВопрос по stackoverflow. Я не пробовал это с гигантскими выходами.
решение2
Другие ответы вводят концепцию. Вот фактическая демонстрация:
$ 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
Конечно, можно > /dev/null
вместо out3.