如何将程序的输出同时指向控制台和日志文件?

时间:2009-07-26 12:37:40

标签: bash redirect stdout

如何同时将输出打印到终端和文件?

$ perl foo.pl > foout.txt

不允许我查看直播过程。

有没有什么方法可以实时看到输出过程,并在文件的屏幕输出结束?

4 个答案:

答案 0 :(得分:17)

perl foo.pl | tee foout.txt

答案 1 :(得分:9)

实用程序tee会这样做。

答案 2 :(得分:7)

IO::Tee。这个模块允许你在你的程序中选择性地进行细粒度控制(还有一个不太成熟的模块叫File::Tee,它曾经为我工作过一次,但我不建议任何严肃的项目)。

另请参阅Log4perl,了解对记录在何处和如何记录的内容进行非常精细的控制。

对于其他人推荐的命令行中的一次性使用,您当然可以使用命令行实用程序tee(如果您有权访问它)。

答案 3 :(得分:0)

或者你可以将它传输到perl程序中以打印到屏幕和日志文件(即如果你不在Unix上或者有一个tee程序)

perl foo.pl | perl myPipe.pl myFile.txt

将数据捕获到myFile.txt和

myPipe.pl是

#
open OUTFILE,">$ARGV[0]" or die "Unable to open file: $ARGV[0]\n";

while(<>)
{
    print;
    print OUTFILE;
}
close OUTFILE;

这将从STDIN读取一行输入并将其打印到屏幕然后再打印到文件。到达结尾时,它将关闭文件

相关问题