例えば、
bash: $ command1 >file 2>&1
だと、STDERRもSTDOUTもファイルにリダイレクトされる。
が、
bash: $ command1 2>&1 >file
だと、STDERRが画面に出力されてしまう。
http://x68000.q-e-d.net/~68user/unix/pickup?%A5%EA%A5%C0%A5%A4%A5%EC%A5%AF%A5%C8
にあるが、bashにおける"N>M"の機能は、内部的にはdup(M, N)(dup2?)をコールしている。
dup(M, N)の意は、MのファイルディスクリプタをNにコピーする。
すなわち、"N>M"の意は、Mの出力先ディスクリプタをNにコピーする。つまり、
bash: $ comman1 2>&1 >file
の意は・・・
1.2(STDERR)の出力先を、1(STDOUT)と同じくする。(=画面)
2.1(STDOUT)の出力先を、fileにする。
ということになる。よって、STDERRだけが画面に出力されるわけ。
逆に言えば、STDERRだけをlessりたい場合などは上記でオッケー。
リダイレクトはcshか、bashかによっても書き方が分かれるので忘れやすいところ。
見た目にもだまされやすい。
上記リンクを書きたかっただけじゃないかと言われればその通りだが、実際、忘れたときには上記リンク参照のこと。