bashの標準出力と標準エラー出力のリダイレクト
タグ: shell / 初版公開: 2013-11-18

基本的なことだがbashのリダイレクトについてメモしておこうと思う。 このメモでは扱わないが、入力のリダイレクトやパイプが混ざると混乱してくる。

標準出力のリダイレクト

commandの標準出力をoutputファイルに出力する。 標準エラー出力はそのままコンソールに表示される。

command > output

標準出力のファイルディスクリプタは1である。 よって1>を使っても同じ意味になる。

command 1> output

標準エラー出力のリダイレクト

commandの標準エラー出力をoutputファイルに出力する。 標準出力はそのままコンソールに表示される。 2>はファイルディスクリプタ2の出力という意味だ。

command 2> output

標準出力と標準エラー出力のリダイレクト

標準出力と標準エラー出力をそれぞれstdoutstderrファイルに出力する。 これでコンソールには何も表示されなくなる。

command > stdout 2> stderr

標準出力と標準エラー出力を同じファイルに出力するには2>&1を使う。 これはファイルディスクリプタ2の出力を1の出力にマージするという意味だ。

command > output 2>&1

だんだん複雑になってきたが、これは頻出なので省略記法がある。 bashでは以下のように書くことが多い。

command &> output