1

stderrがリダイレクトされた後stdout、またはその逆の場合はどうなりますか?

例えば:

someCommand > log.txt 2>&1

対。

someCommand 2>&1 > log.txt

4

3 に答える 3

5

リダイレクトは、出現順に行われます。

someCommand > log.txt 2>&1
  • stdout はファイル記述子 1 ですfd(1) == stdout
  • stderr はファイル記述子 2 ですfd(2) == stderr
  • ファイル記述子 1 をリダイレクトするとlog.txtfd(1) == log.txt
  • ファイル記述子 2 をファイル記述子 1 にリダイレクトすると、fd(2) == fd(1) == log.txt
  • その結果、ファイル記述子 1 または 2 に書き込まれるすべてのものが実際には log.txt に書き込まれます。

someCommand 2>&1 > log.txt
  • stdout はファイル記述子 1 ですfd(1) == stdout
  • stderr はファイル記述子 2 ですfd(2) == stderr
  • ファイル記述子 2 をファイル記述子 1 にリダイレクトすると、fd(2) == fd(1) == stdout
  • ファイル記述子 1 をリダイレクトするとlog.txtfd(1) == log.txt
  • その結果、ファイル記述子 1 に書き込まれるすべてが実際には log.txt に書き込まれます
  • ファイル記述子2に書き込まれるものはすべて、実際にはstdoutに書き込まれます
于 2013-04-03T18:18:19.407 に答える
0

someCommand > log.txt 2>&1- stdout と stderr の両方をlog.txt.

someCommand 2>&1 > log.txt- stdout からlog.txt、stderr から以前の stdout (画面) へ。

于 2013-04-03T18:14:25.437 に答える
0

最初のケースでは、stdout はファイルに送信されlog.txt、次に stderr は stdout が添付されているもの (ファイルlog.txt) に送信されます。2番目のケース。stderr は stdout が接続されているもの (おそらく tty) に向けられ、次に stdout は file に向けられますlog.txt

于 2013-04-03T18:11:24.270 に答える