標準出力周りのリダイレクトの書き方を忘れることがあったのでメモ
動作を試すために以下のGoのプログラムを使用しました。
package main
import (
"fmt"
"os"
)
func main() {
fmt.Fprintln(os.Stdout, "This is stdout")
fmt.Fprintln(os.Stderr, "This is stderr")
}
標準出力をファイルに書き出す
$ ./stdtest > file もしくは ./stdtest 1> file
This is stderr
$ cat file
This is stdout
標準エラー出力をファイルに書き出す
$ ./stdtest 2> file
This is stdout
$ cat file
This is stderr
それぞれcommand 1> file1 2>file2
のように分けて書き出すこともできる。
標準出力とエラー出力両方をファイルに書き出す
$ ./stdtest &> file もしくは ./stdtest >& file
$ cat file
This is stdout
This is stderr
標準出力と標準エラー出力をマージする
$ ./stdtest > file 2>&1
$ cat file
This is stdout
This is stderr
逆だとうまく動かないので注意する。