2013-11-21 112 views
0

我有一個oneliner,不可避免地會產生一些我想忽略的錯誤,所以我試圖將它重定向到一個文件,但它一直在屏幕上顯示。這是它的樣子:無法將stderr重定向到文件

command1 | command2 | command3 1> stdout.txt 2> stderr.txt 

我也嘗試過他們倆發送到同一個文件(&>),但標準錯誤只是不希望它是非常令人沮喪。

+1

您的命令是否向stderr寫入錯誤? – jdigital

+0

我不知道我必須在每個命令後添加重定向。我想他們都是通過管道「聚集」的。它現在有效。如果你可以發佈這個答案,所以我可以給你一些「真實」的信用,那很好。謝謝 ! –

回答

1

您需要重定向標準錯誤您管道的每個階段。你可以這樣做如下:

command1 2>&1 | command 2 

或(在bash至少):

command1 |& command2 

(見bash man page的管道部分)。

2

stderr文件描述符不經過管道,只有stdout。您可以嘗試通過

commandThatDoesNotExist | less 

你會看到什麼在less,但錯誤會在終端上寫。要管stderr文件描述符,它重定向到stdout

commandThatDoesNotExist 2>&1 | less 

現在你看到的錯誤less

爲了不stderr在終端上,你必須每個命令的文件描述符重定向到stderr文件:

command 1 2>stderr.txt | command 2 2>stderr.txt | command 3 2>stderr.txt 1>stdout.txt 
相關問題