оболочка unix, перенаправить вывод, но сохранить на стандартный ввод - PullRequest
4 голосов
/ 17 мая 2010

Я бы хотел, чтобы сценарий оболочки перенаправлял стандартный поток дочернего процесса следующим образом

  1. Перенаправить стандартный вывод в файл
  2. Отображение результатов процесса в режиме реального времени

Я знаю, что могу сделать что-то вроде

#!/bin/sh

./child > file
cat file

Но это не будет отображать стандартный вывод в реальном времени. Например, если ребенок был

#!/bin/sh

echo 1
sleep 1
echo 2

Пользователь будет видеть «1» и «2», напечатанные одновременно

Ответы [ 2 ]

14 голосов
/ 17 мая 2010

Использование tee:

./child | tee file

tee скопирует свой стандартный ввод в любой файл командной строки, а также в стандартный вывод.

0 голосов
/ 18 мая 2010

Я использую: губка, от moreutils http://linux.die.net/man/1/sponge

Вы можете сделать что-то подобное:

$ grep что-то largefile | губка крупноформатная

...