リダイレクト
問題: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