リダイレクション
Linuxの勉強会で得た知識を少し紹介。
リダイレクションの不思議な挙動についてです。
$ echo "test" > file $ cat file test $ echo "test2" >> file $ cat file test test2
これはよく使う感じです。
上記2つのリダイレクションについては、標準出力の内容をfileに書き出すという処理です。
標準エラー出力を記録したい場合は次のようにします。
$ ls -la hoge ls: cannot access hoge: No such file or directory $ ls -la hoge 2> error $ cat error ls: cannot access hoge: No such file or directory
では、同じファイルに標準出力と標準エラー出力の両方を書き出す場合はどうすればいいのでしょう?
$ ls ddd aaa ls: cannot access aaa: No such file or directory ddd $ ls ddd aaa 1> log 2>&1 $ cat log ls: cannot access aaa: No such file or directory ddd
これで完了。
またはこれでもOK。
$ ls ddd aaa 1>> log 2>> log
ではこれはどうでしょう?
・その1
$ ls ddd aaa 1> log 2> log
・その2
$ ls ddd aaa 2>&1 1> log
答え
その1
$ ls ddd aaa 1> log 2> log $ cat log ddd cannot access aaa: No such file or directory
標準出力か標準エラー出力のどっちかだけが出力されるのかと思いきや、エラー出力の上から標準出力の内容で書き換えるという処理が発生。
その2
$ ls -la ddd aaa 2>&1 1> log ls: cannot access aaa: No such file or directory $ cat log ddd
この場合は、logには標準出力の内容のみしか書かれません。