コマンドなどの出力結果をリダイレクトで出力すると標準エラー出力はターミナルに出力されたりファイルには保存されません。
以下、標準エラー出力に出力されたメッセージをファイルに保存する方法を記します。
以下に記す簡単なC言語のサンプルソースを作りました。
#include <stdio.h> int main() { fprintf(stdout, "stdut MESSAGE\n"); fprintf(stderr, "stderr MESSAGE\n"); return 0; }
gcc std.c -o std
以下の実験で使用したシェルはbashになります。cshでは意図した動作になりませんのでご注意ください。
以下の例では、標準出力をstdout.txtファイルに出力し標準エラー出力をstderr.txtファイルに出力します。
1(省略可)が標準出力を示し、2が標準エラー出力を示しています。
./std 1> stdout.txt 2> stderr.txt
or
./std > stdout.txt 2> stderr.txt
以下の例では標準エラー出力のみstderr.txtに出力し標準出力はターミナルに表示します。
./std 2> stderr.txt
以下の例では、標準出力、標準エラー出力を同じファイルに出力します。
./std > output.txt 2>&1
./std >& output.txt