用于> stdout和> stdout + stderr的Bash命令

时间:2013-02-28 09:13:12

标签: linux bash sh

在Linux / bash下我想运行命令并将标准输出发送到foo.txt以及将标准输出和标准错误组合到bar.txt:

$ cmd < input.txt  1>foo.txt 1+2>bar.txt   ???

最简单的方法是什么?

只发送stdout:

$ cmd > foo.txt

要发送stdout / stderr:

$ cmd &> bar.txt

但是试图合并:

$ cmd > foo.txt &>bar.txt

导致foo.txt为空。

2 个答案:

答案 0 :(得分:1)

您不能同时对输出流进行两次重定向。最简单的方法就是将输出管道输出到tee命令。

答案 1 :(得分:1)

以下应该这样做:

(cmd | tee out.txt) &> both.txt

stdout重定向到out.txt,将stdoutstderr重定向到both.txt