回答:
はい、順序は違います。左から右に読む必要があります。
command 2>&1 >somefilestderr(2)をstdout(端末)の現在の宛先にリダイレクトすることを意味します。次にstdoutを変更してに移動しsomefileます。したがって、stderrは端末に行き、stdoutはファイルに行きます。
command >somefile 2>&1stdoutをにリダイレクトしsomefile、次にstderrをstdout(ファイル)と同じ宛先にリダイレクトすることを意味します。したがって、stderrとstdoutの両方がに移動しsomefileます。
これについては、Bashマニュアルのセクション3.6「リダイレクト」で説明されています。
man bash
言う:
REDIRECTIONコマンドが実行される前に、その入力と出力は、シェルによって解釈される特別な表記法を使用してリダイレクトされます。リダイレクトは、現在のシェル実行環境のファイルを開いたり閉じたりするためにも使用できます。次のリダイレクト演算子は、単純なコマンド内のどこにでも先行または出現したり、コマンドの後に続く場合があります。リダイレクションは、左から右に表示される順序で処理されます。
そして
リダイレクトの順序は重要であることに注意してください。たとえば、次のコマンド
ls > dirlist 2>&1標準出力と標準エラーの両方をファイルdirlistに送信し、コマンド
ls 2>&1 > dirlist標準出力がdirlistにリダイレクトされる前に標準出力から標準エラーが複製されたため、標準出力のみをファイルdirlistに送信します。