トップ 差分 一覧 Farm ソース 検索 ヘルプ PDF RSS ログイン

Diary/2011-2-24

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に繋げるってことです