Захватить bash вывод команды в нескольких независимых процессах без повторения или использования файлов tmp - PullRequest
0 голосов
/ 31 января 2020

Чтобы получить выходные данные процесса bash, мы можем использовать перенаправления или каналы:

fooProcess > output.txt

... или ...

fooProcess | barProcess

Мне любопытно если есть способ перехватить вывод fooProcess и использовать его повторно? Например, вот повторяющийся подход:

fooProcess | barProcess
fooProcess | bifProcess

... или ...

fooProcess > file1.txt
fooProcess > file2.txt

В bash как можно сделать две независимые вещи с выводом fooProcess не повторяя или не сохраняя это каким-либо образом? Что-то вроде:

"Выполнить fooProcess один раз, а затем сохранить все свои выходные данные как в файле file1.txt, так и в file2.txt" или "Выполнить fooProcess один раз, а затем направить сначала в barProcess, а затем в bifProcess ".

А bash даже делает это? Какой у него срок?

1 Ответ

1 голос
/ 31 января 2020

Чтобы записать в несколько файлов, используйте tee:

cmd | tee file1 file2

Для передачи в несколько процессов вы можете использовать подстановка процессов и tee :

cmd | tee >(process1) >(process2)

Оба они все еще печатают на стандартный вывод. Если вы не хотите этого, вам нужно перенаправить еще раз:

cmd | tee file1 file2 >/dev/null
cmd | tee >(process1) >(process2) >/dev/null

или использовать перенаправление на один из файлов / процессов, например так:

cmd | tee file1 > file2
cmd | tee >(process1) | process2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...