Назад | Перейти на главную страницу

поток stdout команды и объединение с stdin терминала в один stdout

Этот ответ показывает множество способов передать несколько команд в другую команду, но, поскольку они используют подоболочки, вы не можете использовать стандартный ввод.

Хотя вы можете добиться этого с помощью именованных каналов, это несколько уродливо и впоследствии может оставить оставшиеся процессы:

$ mkfifo p
$ while :; do sleep 5s; echo save; done > p &
$ cat p > output &
$ cat </dev/stdin > p
test
asdf
woot
^C
$ cat output
save
test
asdf
save
save
woot
save
$ jobs
[1]-  Running                 while :; do
    sleep 5s; echo save;
done > p &
[2]+  Running                 cat p > output &

Есть ли способ сделать это с помощью одной команды? В идеале я бы хотел что-то вроде:

someutil <(while :; do sleep 5s; echo save; done) /dev/stdin > output

Таким образом, я могу передать вывод другой команде вместо файла.