- 追加された行はこのように表示されます。
- 削除された行は
このように表示されます。
!Bashのリダイレクトとかパイプとか
tiwtterでつぶやいたら,いろいろな人に教えていただきました.
* miyox: bashってstderrを|&でだせないのか...
* toyoshim: @miyox 2>&1 じゃなかったっけ? bash使いじゃないので怪しいけど
* tgbt:@miyox 2>&1 | でしたっけ?
* miyox: @tgbt おおー、なるほど。ありがとうございます♪
* miyox: 2>&1 でstderrをstdoutと同じディスクリプタに書くのか。でも、2>&1 > hogeとかやってもhogeにはstdoutだけが書き出されるのね。&>と同じ挙動になるのかと思ったのにー。
* shinji_kono: @miyox 順序が逆でないと、期待した通りにならないはずです。
* y-Aki: @miyox 順序が重要なはず
* miyox: @y_aki @shiji_kono 順序ですか。うーん、./a.out 2>&1 > fefe.2.1と./a.out 1>&2 > fefe.1.2でも元のstdoutだけがファイルに書かれます。勿論./a.out &> fefeだとstdoutもstderrも書かれますが。
* miyox: 順序ってこういうことか...わかったような。わからないような。 http://www.fireproject.jp/feature/bash/basic/redirect-pipe.html#3
* untamedcat: @miyox あやふやな情報なのでアレですが、bashの場合は右から順番に解釈されて有効になっていく、と何処かで教わった気が。
* miyox: @untamedcat ああー、そうなんですねー。なるほどです。
* y_aki: @miyox ./a.out > foo 2>&1 でfooにstdoutとstderrが入る >foo でハンドル1(stdout)のリダイレクトで、2>&1で ハンドル2(stderr)をハンドル1に繋げるってことです