2010-05-17 104 views
4

我想有一个子进程的shell脚本将stdout通过以下方式UNIX外壳,重定向输出,但保持在标准输入

  1. stdout重定向到文件
  2. 显示的输出实时处理

我知道我可以做这样的事情

#!/bin/sh 

./child > file 
cat file 

但不会解散实时播放标准输出。例如,如果孩子是

#!/bin/sh 

echo 1 
sleep 1 
echo 2 

用户将看到 “1” 和 “2” 在同一时间打印

回答

14

使用tee

./child | tee file 

tee会复制它的标准输入到命令行上的任何文件以及标准输出。

+2

另一个提示:'tee -a'用于追加文件,如果你想要的话,相当于使用>>而不是>与正常的shell重定向。 – davr 2010-05-17 17:48:40

-1

我用:海绵,从moreutils http://linux.die.net/man/1/sponge

你可以做这样的事情:

$ grep的东西largefile |海绵大文件

+0

它如何满足“实时显示过程的输出”? – 2011-03-16 18:14:44