標準出力と標準エラーリダイレクト

標準出力と標準エラーリダイレクト

私はファイル記述子間の関係を理解し​​ようとしてきました。私が理解していないものの1つは次のとおりです。

ls -l /bin/usr > ls-output.txt 2>&1

以下とは異なります。

ls -l /bin/usr 2>&1 >ls-output.txt

ベストアンサー1

リダイレクトは順次実行されるため、リダイレクトの順序が重要です。

>ファイル名2>&1

stdoutこの例では、(fd 1)がターゲットをポイントfilenameし、次にstderrfd 2)がターゲットをポイントします。stdoutfilename

つまり、stdout両方stderrとも次にリダイレクトされます。filename

2>&1>ファイル名

ここで、stderrfd 2)はターゲットを指し、stdoutstdoutfd 1は次にリダイレクトされます。filename.

これはstderr、リダイレクトする元の宛先がリダイレクトされてstdoutいることを意味します。stdoutfilename

つまり、各ファイル記述子は互いに独立しているため、リダイレクトの順序が重要です。

追加情報

詳しくは、次のような他の質問と回答をご覧ください。

おすすめ記事