標準出力と標準エラーをファイルに書き出す場合、以下のように指定します。 [root@localhost ]# cat aaa >log 2>&1 [root@localhost ]# cat log cat: aaa: そのようなファイルやディレクトリはありません これを下記のように指定すると上手くいきません。 [root@localhost ]# cat aaa 2>&1 >log cat: aaa: そのようなファイルやディレクトリはありません 標準エラーを標準出力にリダイレクトして、それをlogファイルにリダイレクトするという流れから、下記の方が自然に思えるのですが・・・。 この誤解は、シェルでのリダイレクトの処理は、ファイルディスクリプタの差し替えのみにもかかわらず、出力までの流れとして解釈してしまうところにあるのではと思います。 2>&1はシェルでdup2(1,2)をコールします