Io-Redirection

如何判斷命令或 shell 腳本的輸出是 stdout 還是 stderr

  • April 14, 2021

假設我執行一個命令或 shell 腳本,它給了我輸出。在不了解此命令或 shell 腳本的內部結構的情況下,如何確定輸出是否來自stderror stdout

例如,

$ ls -ld /
drwxrwxr-t  35 root  admin  1258 Dec 11 19:16 /

對比

ls -ld /test
ls: /test: No such file or directory

我如何確定第一個命令列印到stdout,第二個命令列印到stderr(是嗎?)?

一旦輸出已經列印,就沒有辦法知道了。在這種情況下,兩者stdoutstderr都連接到終端,因此當文本出現在終端上時,有關寫入哪個流的資訊已經失去;在進入終端之前,它們被程序組合在一起。

在上述情況下,您可以做的是執行命令stdoutstderr重定向到不同的地方,看看會發生什麼。或者執行兩次,一次使用stdoutredirected to /dev/null,一次使用stderrredirected to /dev/null,看看哪些情況會導致文本顯示。

您可以通過在命令行末尾添加重定向到,您可以stdout通過添加重定向到。/dev/null``>/dev/null``stderr``/dev/null``2>/dev/null

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