私はファイル記述子間の関係を理解しようとしてきました。私が理解していないものの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
し、次にstderr
(fd 2
)がターゲットをポイントします。stdout
filename
つまり、stdout
両方stderr
とも次にリダイレクトされます。filename
2>&1>ファイル名
ここで、stderr
(fd 2
)はターゲットを指し、stdout
(stdout
)fd 1
は次にリダイレクトされます。filename.
これはstderr
、リダイレクトする元の宛先がリダイレクトされてstdout
いることを意味します。stdout
filename
つまり、各ファイル記述子は互いに独立しているため、リダイレクトの順序が重要です。
追加情報
詳しくは、次のような他の質問と回答をご覧ください。