2010-05-17 5 views
4

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

  1. Перенаправление стандартный вывод в файл
  2. Выведите выход из процесс в реальном времени

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

#!/bin/sh 

./child > file 
cat file 

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

#!/bin/sh 

echo 1 
sleep 1 
echo 2 

Пользователь увидит "1" и "2", напечатанной в то же время

ответ

14

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

./child | tee file 

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

+2

Еще один совет: «tee -a» предназначен для добавления файлов, если вы хотите, чтобы это эквивалентно использованию >> вместо> с нормальным перенаправлением оболочки. – davr

-1

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

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

$ Grep что-то largefile | sponge largefile

+0

Как это выполнить «Отобразить вывод процесса в режиме реального времени»? –

Смежные вопросы