Stdout

在不同情況下使用 stdout/stderr 進行輸出時,什麼被認為是“理想的”?

  • December 15, 2015

我以各種不同的方式看到stdout和使用過——據我所知,通常用於一般資訊和錯誤等。但是,我也看到用於輸出與程序本身相關的資訊消息(但與錯誤、警告、調試等無關)和用於調試目的(我假設後者使用錯誤流,以便可以將其過濾掉以幫助調試),以及我認為應該屬於的更嚴重的警告。stderr``stdout``stderr``stderr``stdout``stderr

stdout所以,我想知道 - 除了一般輸出和錯誤之外,什麼時候使用或stderr與程序輸出的內容相關時被認為是理想的?它是更依賴於程序,還是更通用?

stdout分離的原因stderr首先是為了區分程序數據輸出(可能儲存在文件中,饋送到管道等)和診斷和絨毛(只有人類操作員才真正感興趣)在終端)。(沒有自動的輸入方式,但您可以通過打開和讀取控制終端設備而不是 來更麻煩地做到這一點stdin。)因此,如果您可以選擇在stdout或上寫一些東西stderr,最好的啟發式可能是“使用我的輸出的另一個程序會對這些數據感興趣嗎?” 但是,這可能取決於程序和應用程序,因此沒有單一的覆蓋規則。(這就是為什麼有覆蓋選項,2>&1``bash.)

引用自:https://unix.stackexchange.com/questions/247162