2016-11-25 62 views
1

我想運行du,並將stdout重定向到一個文件,並將stderr重定向到另一個文件。如何在bash中的一行上執行雙重定向?

我也行:

du -ah/| sort -h >/home/username/stdout.txt 2>/home/username/stderr.txt 

我知道這應該總是產生錯誤,因爲事情在/ proc /不是有形的都希望他們是 - 這很好。這一行將填充stdout.txt和我想要查看的所有內容,但stderr仍會溢出到控制檯中,並且stderr.txt文件仍爲空。有沒有辦法做這樣的交錯重定向,還是我必須兩次運行這條線,每條線都有自己的重定向?

回答

2

您正在捕獲sort發佈的錯誤流,而不是du(它在stderr上沒有重定向),這說明您的文件是空的。

您想對stdout的輸出進行排序,並捕獲標準錯誤(未排序)中的du命令的錯誤。比如像這樣做:

du -ah/2>/home/username/stderr.txt | sort -h >/home/username/stdout.txt 
+0

啊!當然,謝謝你的幫助。 – Volumetricsteve