>&2 を使用して出力を /dev/stderr に送信します。

>&2 を使用して出力を /dev/stderr に送信します。

スクリプトでは、エラーは通常ファイル記述子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

追加資料:

おすすめ記事