stderrがリダイレクトされた後stdout、またはその逆の場合はどうなりますか?
例えば:
someCommand > log.txt 2>&1
対。
someCommand 2>&1 > log.txt
リダイレクトは、出現順に行われます。
someCommand > log.txt 2>&1
fd(1) == stdoutfd(2) == stderrlog.txt、fd(1) == log.txtfd(2) == fd(1) == log.txtsomeCommand 2>&1 > log.txt
fd(1) == stdoutfd(2) == stderrfd(2) == fd(1) == stdoutlog.txt、fd(1) == log.txtsomeCommand > log.txt 2>&1- stdout と stderr の両方をlog.txt.
someCommand 2>&1 > log.txt- stdout からlog.txt、stderr から以前の stdout (画面) へ。
最初のケースでは、stdout はファイルに送信されlog.txt、次に stderr は stdout が添付されているもの (ファイルlog.txt) に送信されます。2番目のケース。stderr は stdout が接続されているもの (おそらく tty) に向けられ、次に stdout は file に向けられますlog.txt。