Io-Redirection
如何判斷命令或 shell 腳本的輸出是 stdout 還是 stderr
假設我執行一個命令或 shell 腳本,它給了我輸出。在不了解此命令或 shell 腳本的內部結構的情況下,如何確定輸出是否來自
stderr
orstdout
?例如,
$ ls -ld / drwxrwxr-t 35 root admin 1258 Dec 11 19:16 /
對比
ls -ld /test ls: /test: No such file or directory
我如何確定第一個命令列印到
stdout
,第二個命令列印到stderr
(是嗎?)?
一旦輸出已經列印,就沒有辦法知道了。在這種情況下,兩者
stdout
和stderr
都連接到終端,因此當文本出現在終端上時,有關寫入哪個流的資訊已經失去;在進入終端之前,它們被程序組合在一起。在上述情況下,您可以做的是執行命令
stdout
並stderr
重定向到不同的地方,看看會發生什麼。或者執行兩次,一次使用stdout
redirected to/dev/null
,一次使用stderr
redirected to/dev/null
,看看哪些情況會導致文本顯示。您可以通過在命令行末尾添加重定向到,您可以
stdout
通過添加重定向到。/dev/null``>/dev/null``stderr``/dev/null``2>/dev/null