昨日、私はこのSOコメントを読みました。このコメントでは、シェル内で(少なくともbash
)は>&-
「と同じ結果になります」と述べてい>/dev/null
ます。
そのコメントは、実際にはその情報源としてABSガイドを参照しています。しかし、そのソースは、>&-
構文が「ファイル記述子を閉じる」と述べています。
ファイル記述子を閉じてヌルデバイスにリダイレクトするという2つのアクションが完全に同等であるかどうかは明確ではありません。だから私の質問は:彼らですか?
表面的には、記述子を閉じることはドアを閉じることに似ていますが、ヌルデバイスにリダイレクトすることはリンボへのドアを開くことです!閉じたドアが見えても、そこから何も捨てようとしないので、この2つはまったく同じようには見えませんが、開いたドアがあれば、できると思います。
言い換えれば、ファイルのすべてのバイトを実際に処理し、それを忘れたファイルに書き込むことを>/dev/null
意味するのかどうか、私はいつも疑問に思っていました。一方、シェルが閉じられたファイル記述子に遭遇した場合、私は考える傾向がある(ただし、わからない)疑問が残るかどうかかかわらず、それは単に、何も書かないということはまだだろう読んですべてのバイトを。cat mybigfile >/dev/null
/dev/null
cat
このコメントは「同じである必要が>&-
あります>/dev/null
」と言っていますが、それは私にとってそれほど圧倒的な答えではありません。標準またはソースコアを参照するかどうかに関係なく、より信頼できる回答を希望します。