如何将控制台输出重定向到文本文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将控制台输出重定向到文本文件相关的知识,希望对你有一定的参考价值。

我正在执行一个Perl程序。无论在我的控制台上打印什么,我想将其重定向到文本文件。

答案

对此的首选方法是通过命令行处理重定向,例如,

perl -w my_program.pl > my_output.txt

如果你还想包含stderr输出,那么你可以这样做(假设你的shell是bash):

perl -w my_program.pl &> my_output.txt
另一答案

在CLI中,您可以使用>,如下所示:

perl <args> script_name.pl > path_to_your_file

如果要在perl脚本中执行此操作,请在打印任何内容之前添加此代码:

open(FH, '>', 'path_to_your_file') or die "cannot open file";
select FH;
# ...
# ... everything you print should be redirected to your file
# ...
close FH;  # in the end
另一答案

在Unix上,要捕获到终端的所有内容,您需要重定向标准输出和标准错误。

使用bash,命令类似

$ ./my-perl-program arg1 arg2 argn > output.txt 2>&1

C shell,csh衍生品,如tcsh,以及更新版本的bash了解

$ ./my-perl-program arg1 arg2 argn >& output.txt

意思是同样的事情。

Windows上命令shell的语法类似于Bourne shell。

C:> my-perl-program.pl args 1> output.txt 2>&1

要在Perl代码中设置此重定向,请添加

open STDOUT, ">", "output.txt" or die "$0: open: $!";
open STDERR, ">&STDOUT"        or die "$0: dup: $!";

到程序的可执行语句的开头。

另一答案

如果您希望在控制台和日志上打印输出,请将此行附加到您的代码中(例如,在任何打印语句之前)

open (STDOUT, "| tee -ai logs.txt");
print "It Works!";

在脚本中最后一次打印之后

close (STDOUT);

仅对于错误消息,

open (STDERR, "| tee -ai errorlogs.txt");

以上是关于如何将控制台输出重定向到文本文件的主要内容,如果未能解决你的问题,请参考以下文章

将 Visual C++ 控制台输出复制(不重定向)到文本文件,同时仍在控制台窗口中查看输出

将输出重定向到文件,然后返回到 Java 中的控制台

linux下如何将,控制台输出的所有内容,全部输出到一个文本文件

我们如何将 Java 程序控制台输出重定向到多个文件?

如何在实时输出的同时将命令的 stdout 和 stderr 重定向到控制台和日志文件?

Pitest:如何将日志输出重定向到文件?