将stderr重定向到stdout和一个单独的文件? - perl,linux

时间:2015-02-13 20:47:00

标签: linux perl io-redirection

我想将stdout和stderr重定向到file1,但也只将stderr重定向到file2。这可能吗?我有一个第1部分的工作脚本,但无法弄清楚如何另外将stderr写入file2,而不会覆盖重定向到file1(实际上,第一个stderr重定向将转到stdout然后转到file1)。我正在尝试这样做,因此file1可以包含打印语句和错误,就像我在控制台中运行一样,而file2只会记录错误。

有关实现这一目标的最佳方法的任何想法,而不会偏离我已经拥有的东西吗?

open STDOUT, '>', "$file1" or die $!; # redirect stdout to file
open STDERR, '>&STDOUT' or die $!; # redirect standard error to stdout
# now how to *also* redirect STDERR to $file2?

由于

修改:我认为这不是this question的副本;它是,我想念它。他们希望将输出到屏幕并进入日志文件,我希望我的stdout / stderr除了只有stderr转到另一个自己的文件外,还要转到同一个文件。我不希望(或看不到)屏幕上的任何输出。这就像我第三次用perl写作一样,这对我来说很新鲜。我已经看了几个小时(包括已经查看你链接的'重复'帖子),并且找不到合理的解决方案来解决我的问题。

1 个答案:

答案 0 :(得分:3)

您可以尝试使用Perl模块IO::Tee,它允许您将输出重定向到多个输出句柄。