2013-02-28 53 views
1

在Linux/bash的我想运行的命令,并发送标准输出到foo.txt的以及合成标准输出和标准误差跳回到bar.txt:bash命令为> stdout和>标准输出+ stderr的

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

最简单的方法是什么?

要只是标准输出发送是:

$ cmd > foo.txt 

同时发送标准输出/标准错误是:

$ cmd &> bar.txt 

但是尝试要结合:

$ cmd > foo.txt &>bar.txt 

原因foo.txt的是空。

+0

尽管'&>'的确如你在'bash'中描述的那样工作,请注意它的使用是非标准的。事实上,可以说它违反了标准,尽管有些人声称标准在这一点上是不明确的。它在'dash'中的表现完全不同。 – 2013-02-28 19:50:51

回答

1

下应该这样做:

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

这会重定向到stdoutout.txtstdoutstderrboth.txt

+0

它的工作原理,谢谢。 – 2013-02-28 09:19:56

1

您不能同时有两个重定向输出流。最简单的方法就是将输出输出到tee命令。

+0

在这种情况下命令行使用tee命令的样子是什么? – 2013-02-28 09:15:44