スクリプトでは、エラーは通常ファイル記述子2に送信されます&2
。つまり、次のようになります。
echo "error" >&2
時には/dev/stderr
次のように使用されます。
echo "error" > /dev/stderr
を見ると/dev/stderr
のシンボリックリンクだけですが(現在端末では)の/proc/self/fd/2
シンボリックリンクであることがわかります。/dev/pts/5
少し複雑すぎるようです。これの背後にはどんな論理がありますか?
using/dev/stderr
と&2
同等ですか?
どちらか一方が他よりも優先されますか?
ベストアンサー1
特殊デバイス/dev/stderr
はシステムによって異なりますが、ファイル記述子2
(特殊デバイスではありません/proc/self/fd/2
)は移植可能です。移植不可能なコードを書くには、これらの特別なデバイスを使用することをお勧めします。
次のシステムが提供されます/dev/stderr
。もちろん、Linuxも含まれます。OSX。ただし、OSXには/proc
ファイルシステムは/dev/stderr
ありません/dev/fd/2
。
追加資料: