Portability

將輸出發送到 /dev/stderr vs. >&2

  • December 8, 2017

在腳本中,錯誤通常用 發送到文件描述符 2 &2,即:

echo "error" >&2

有時/dev/stderr改為使用:

echo "error" > /dev/stderr 

看著/dev/stderr,我發現它只是指向 的符號連結/proc/self/fd/2,而後者又是指向/dev/pts/5(在我目前的終端上)的符號連結。

似乎有點過於復雜。這背後有什麼邏輯嗎?

是使用/dev/stderr&2等價的嗎?

其中任何一個比另一個更受歡迎嗎?

特殊設備/dev/stderr是系統特定的,而文件描述符2(不是特殊設備/proc/self/fd/2)是可移植的。如果你想編寫不可移植的程式碼,那些特殊的設備是一個很好的起點。

有幾個系統/dev/stderr:Linux,當然,和OSX。但是 OSX 沒有/proc文件系統,它/dev/stderr是指向/dev/fd/2.

進一步閱讀:

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