リダイレクト

問題:Bashシェルで、commandの標準出力と標準エラー出力を、ファイル"file" に追加するには?

command >> file 2>&1

commandが実行されると、通常標準出力と標準エラー出力の両方が画面に表示されます。リダイレクトを使うと、標準出力だけをファイルに保存して標準エラー出力のみを画面に表示する、といったことが可能になります。Bashシェル(というか Bシェル)では、以下の各リダイレクトは

> ....ファイルを新規作成。すでにあったら上書き。

>> ....ファイルの後ろに追加する。

1> ....標準出力をリダイレクト (> と同じ)

2> ....標準エラー出力をリダイレクト

2>&1 ....標準エラー出力と標準出力が統合されて標準出力に書き出される

という意味になる。


「>」での上書きがいやな場合は、

set noclobber

としておき、デフォルトで上書きできないようにするという手がある。上書きしたいときは、

command >! file

とすればよい。


使用例として、

command 2> file 標準エラー出力を 'file' に保存、標準出力を画面表示
command 2>> file 標準エラー出力を 'file' に追加、標準出力を画面表示
command > file 2>&1 標準出力と標準エラー出力を 'file' に保存
echo Hello world > myfile リダイレクトを試したい場合に手っ取り早く。

パイプとリダイレクトについては
http://www.wakhok.ac.jp/~maruyama/Unix92/pipe/chapter2.1.html