標準出力・標準エラー出力へのリダイレクト
こんなプログラムを作って試した。
#include <stdio.h> int main(int argc, char *argv[]) { printf("stdout\n"); fprintf(stderr, "stderr\n"); return 0; }
$ ./a.out stdout stderr $ ./a.out > /dev/null stderr $ ./a.out 1> /dev/null stderr $ ./a.out 2> /dev/null stdout $ ./a.out &> /dev/null $ ./a.out > /dev/null 2>&1
標準出力と標準エラー出力をまとめてリダイレクトする方法は、今まで
$ ./a.out > /dev/null 2>&1
を使っていたんだけど、以下でも可能なことを本日発見。
$ ./a.out &> /dev/null
追記:
ただし、これは bash の機能なので、sh では使用できないため、従来の方式が良いかもしれない。
追記2:
C シェル系だと以下のようにまとめられるんだ。
$ ./a.out >& /dev/null
bash と微妙に違ってて、混乱しそう。