私はecho
が多くの場所でこのように使用されるのを見ました:
echo >&2 message text ...
これは何を意味するのでしょうか?
わかります 2>&1
ただし、上記の使用法をどのように解釈するかはわかりません。
誰でも説明できますか?
他の人が見逃したものをすぐに説明するには:
echo "hey" >&2
>
標準出力のリダイレクト(暗黙の1>
)
&
次に来るのはファイルではなくファイル記述子です(>
の右側のみ)
2
stderrファイル記述子番号
stdout
をecho
コマンドからstderr
にリダイレクトします。 (echo "hey" >2
を使用する場合は、hey
を2
というファイルに出力します)
の用法 >&2
ここでは、出力を標準出力ではなく標準エラーに送信しています。これは一般に、計算の実際の結果ではないログ出力を送信するのに適した場所です。特に、結果が他のファイル出力(つまり、標準エラーにより、出力ファイルにリダイレクトされた実際の出力に含まれないことが保証されます)。
>&2
リダイレクトは1>& 2
。
分かるでしょう 2>& 1
これにより、コマンドのstdoutが現在のstderrにリンクされていることがわかります。
他の回答では良い説明が得られますが、ここで尋ねられている正確な質問が欠落しています。最良の答えは、質問に対する直接のコメントの形ですが、残念ながら、Stack Overflowは私にコメントを追加する価値があるとは考えていません。
そのため、 quote tripleee :
コマンドラインでのリダイレクトのprevise [sic]位置は重要ではありません。すべての
>&2 echo message
およびecho >&2 message
およびecho message >&2
は同等です。
これは私が探していた正確な質問であり、現在の答えはどれもそれに答えません。彼らは私がすでに知っていることを説明するだけです。一方、質問はより良いフレージングから利益を得る可能性がありますが、再び、私はコメントを禁止されているので...