基本的なことだがbashのリダイレクトについてメモしておこうと思う。 このメモでは扱わないが、入力のリダイレクトやパイプが混ざると混乱してくる。
標準出力のリダイレクト
command
の標準出力をoutput
ファイルに出力する。 標準エラー出力はそのままコンソールに表示される。
command > output
標準出力のファイルディスクリプタは1である。 よって1>
を使っても同じ意味になる。
command 1> output
標準エラー出力のリダイレクト
command
の標準エラー出力をoutput
ファイルに出力する。 標準出力はそのままコンソールに表示される。 2>
はファイルディスクリプタ2の出力という意味だ。
command 2> output
標準出力と標準エラー出力のリダイレクト
標準出力と標準エラー出力をそれぞれstdout
、stderr
ファイルに出力する。 これでコンソールには何も表示されなくなる。
command > stdout 2> stderr
標準出力と標準エラー出力を同じファイルに出力するには2>&1
を使う。 これはファイルディスクリプタ2の出力を1の出力にマージするという意味だ。
command > output 2>&1
だんだん複雑になってきたが、これは頻出なので省略記法がある。 bashでは以下のように書くことが多い。
command &> output