2013-02-28 85 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