Как я могу направить стандартный вывод в два канала?

Мне нужно сделать две разные вещи со стандартным потоком вывода моей программы: скажем, направить его в два канала или вывести на терминал и направить в канал. Но ни одна из этих вещей не направляет его в файл.

Если бы мне нужен канал + файл, я бы использовал команду tee: myprog | tee out.txt | another_command, как описано здесь. Но что, если ни одно из двух действий не записывает в файл?


person einpoklum    schedule 28.08.2020    source источник


Ответы (1)


Для этого вы можете использовать подстановку процесса в bash. Допустим, вы хотите перенаправить вывод из myprog в два отдельных объекта для чтения, используйте >(..) вместе с tee

myprog | tee >(prog1) >(prog2)

См. вики Грега или man bash для получения дополнительной информации.

person Community    schedule 28.08.2020
comment
... как написано здесь - person mkrieger1; 28.08.2020
comment
@ mkrieger1: не видел субдубликата. Сделаю ответ вики сообщества - person Inian; 28.08.2020
comment
@Иниан; Действительно, ответы прямых дубликатов уступают вашим :-) - person einpoklum; 28.08.2020