将stderr和stdout重定向到Bash中的单独文件?

时间:2014-03-18 03:50:00

标签: linux bash shell

我可以使用以下内容将stdoutstderr重定向到单独的文件中

dir >> out 2>> error

stderrorstdout使用以下内容合并为一个文件:

dir >> consolidate 2>&1

我如何一起完成这项工作(退出,错误,一次合并文件)?

2 个答案:

答案 0 :(得分:5)

您可以尝试以下内容:

(command > >(tee out.txt) 2> >(tee error.txt >&2)) &> consol.txt

<强>测试

$ ls
f

$ ls g*
ls: cannot access g*: No such file or directory

$ (ls g f > >(tee out.txt) 2> >(tee error.txt >&2)) &> consol.txt

$ cat out.txt
f

$ cat error.txt
ls: cannot access g: No such file or directory

$ cat consol.txt
f
ls: cannot access g: No such file or directory

答案 1 :(得分:3)

不需要任何基础,因为这可以很容易地在标准sh中完成:

{ { dir | tee -a out; } 2>&1 >&3 | tee -a error; } >> consolidate 3>&1