本文介绍了Bash重定向:将stderr/stdout保存到其他文件,并仍然在控制台上将它们打印出来的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是一个简单的程序.

class Redirection {

public static void main (String args[]){
    System.out.println("Hello World_Stdout");
    System.err.println("Hello World_Stderr");
}

}

我想在控制台上查看所有输出,但同时我想将stdout和stderr存储在不同的文件中.我尝试了以下命令,但无济于事.

I want to see the all the outputs on a console, but at the same time I want to store stdout and stderr in different files. I tried the following command, to no avail.

$java Redirection 3>&1 2>stderr 1>stdout 1>&3 2>&3

stderr& stdout文件的文件大小为0.

stderr& stdout files have the file size of 0.

所以基本上我想做"tee"命令,但是我也想捕获stderr.

So basically I want to do what "tee" command does but I also want to capture stderr as well.

推荐答案

以下是答案:

./yourScript.sh > >(tee stdout.log) 2> >(tee stderr.log >&2)

如果您的脚本具有STDOUT和STDERR描述符,您将获得2个文件 stdout.log + stderr.log ,并将所有输出(Err + Out)导入控制台.

If your script has STDOUT and STDERR descriptors, you get 2 files stdout.log + stderr.log and all output (Err + Out) to console.

这篇关于Bash重定向:将stderr/stdout保存到其他文件,并仍然在控制台上将它们打印出来的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-29 20:30