2008-09-16 7 views

ответ

23

Команда команды unix делает это.

man tee 
+0

Если бы это зависело от меня, то я бы «принял» этот ответ – 2008-09-16 20:36:31

2

Использование Procmail. Procmail - ваш друг. Procmail сделан для такого рода вещей.

5

Стандартный Unix инструмент тройник может это сделать. Он копирует ввод на вывод, а также записывает его в файл.

8

Вы не одиноки в необходимости что-то подобное .. на самом деле, кто-то хотел я несколько десятилетий назад и разработали tee :-)

Конечно, вы можете перенаправить стандартный вывод непосредственно в файл в любой оболочке с помощью> знак:

echo "hello, world!" > the-file.txt 
0

Да? Наверное, у меня нет вопроса?

Разве вы не можете просто закончить свою трубу в >> ~file

Например

echo "Foobar" >> /home/mo/dumpfile 

добавит Foobar к DUMPFILE (и создать дамп-файл, если это необходимо). Нет необходимости в скрипте оболочки ... Это то, что вы искали?

1

Если вы хотите проанализировать его в подлиннике:

while /bin/true; do 
    read LINE 
    echo $LINE > $OUTPUT 
done 

Но вы можете просто использовать кошку. Если кошка получает что-то на stdin, она будет эхом выводить его на stdout, поэтому вам нужно будет передать его cat> $ OUTPUT. Они будут делать то же самое. Второй работает и для двоичных данных.

0

, если вы не заботитесь о выводе результата

cat - > filename 

или

cat > filename 
0

Если вы хотите скрипт, попробуйте следующее:

#!/bin/sh 
exec cat >/path/to/file 
1

Если exim или Sendmail это то, что записывается в трубу, тогда procmail - хороший ответ, потому что он даст вам блокировку/сериализацию файлов, и вы c положите все в один файл.

Если вы просто хотите записать в файл, а затем - тройник> /tmp/log.$$ или - кошка> /tmp/log.$$ может быть достаточно хорошим.

0

< < command >> | tee < file >>

Это также покажет выход.