web-dev-qa-db-ja.com

echo>&2 "some text"シェルスクリプトでの意味

私はechoが多くの場所でこのように使用されるのを見ました:

echo >&2 message text ...

これは何を意味するのでしょうか?

わかります 2>&1ただし、上記の使用法をどのように解釈するかはわかりません。

誰でも説明できますか?

52
CuriousMind

他の人が見逃したものをすぐに説明するには:

echo "hey" >&2

>標準出力のリダイレクト(暗黙の1>

&次に来るのはファイルではなくファイル記述子です(>の右側のみ)

2 stderrファイル記述子番号

stdoutechoコマンドからstderrにリダイレクトします。 (echo "hey" >2を使用する場合は、hey2というファイルに出力します)

99
Jite

の用法 >&2ここでは、出力を標準出力ではなく標準エラーに送信しています。これは一般に、計算の実際の結果ではないログ出力を送信するのに適した場所です。特に、結果が他のファイル出力(つまり、標準エラーにより、出力ファイルにリダイレクトされた実際の出力に含まれないことが保証されます)。

23

>&2リダイレクトは1>& 2

分かるでしょう 2>& 1これにより、コマンドのstdoutが現在のstderrにリンクされていることがわかります。

8
Henk Langeveld

他の回答では良い説明が得られますが、ここで尋ねられている正確な質問が欠落しています。最良の答えは、質問に対する直接のコメントの形ですが、残念ながら、Stack Overflowは私にコメントを追加する価値があるとは考えていません。

そのため、 quote tripleee

コマンドラインでのリダイレクトのprevise [sic]位置は重要ではありません。すべての >&2 echo messageおよびecho >&2 messageおよびecho message >&2は同等です。

これは私が探していた正確な質問であり、現在の答えはどれもそれに答えません。彼らは私がすでに知っていることを説明するだけです。一方、質問はより良いフレージングから利益を得る可能性がありますが、再び、私はコメントを禁止されているので...

2
Dave.Haku