#navi(../)
*標準エラー出力をファイルに出力する方法 [#f7f566da]
コマンドなどの出力結果をリダイレクトで出力すると標準エラー出力はターミナルに出力されたりファイルには保存されません。~
以下、標準エラー出力に出力されたメッセージをファイルに保存する方法を記します。~
#contents
#htmlinsertpcsp(linux_ads_top.html,linux-sp.html)
* 関連資料 [#rc82e41a]
-[[2>&1をでバックグラウンド実行の&は何処に記述する?>逆引きUNIXコマンド/2>&1をでバックグラウンド実行の&は何処に記述する?]]
-[[echoコマンドの出力を標準エラー(stderr)に出力する方法>逆引きUNIXコマンド/echoコマンドの出力を標準エラー(stderr)に出力する方法]]
-[[teeコマンドでstderr(標準エラー)も対象にする>逆引きUNIXコマンド/teeコマンドでstderr(標準エラー)も対象にする]]
*テストコード [#he81dfad]
以下に記す簡単なC言語のサンプルソースを作りました。
#ref(std.c)
#include <stdio.h>
int main()
{
fprintf(stdout, "stdut MESSAGE\n");
fprintf(stderr, "stderr MESSAGE\n");
return 0;
}
-コンパイル
以下のコマンドでコンパイルすると実行ファイルstdが作成されます。
gcc std.c -o std
#ref(stderr-01.png)
#br
-ターミナルで実際に実行させてみます。
下図の通り、ターミナル上にstdout, stderrともに出力されます。
#ref(stderr-02.png)
*実験(実行例) [#q7ba8320]
以下の実験で使用したシェルはbashになります。cshでは意図した動作になりませんのでご注意ください。
**標準出力と標準エラー出力を別々のファイルに出力する [#xbc7f0ef]
以下の例では、標準出力をstdout.txtファイルに出力し標準エラー出力をstderr.txtファイルに出力します。~
1(省略可)が標準出力を示し、2が標準エラー出力を示しています。
./std 1> stdout.txt 2> stderr.txt
or
./std > stdout.txt 2> stderr.txt
#ref(stderr-03.png)
**標準エラーのみファイルに出力する [#ube6d232]
以下の例では標準エラー出力のみstderr.txtに出力し標準出力はターミナルに表示します。
./std 2> stderr.txt
#ref(stderr-04.png)
**標準出力と標準エラー出力をおなじファイルに出力する [#n9435b46]
以下の例では、標準出力、標準エラー出力を同じファイルに出力します。
./std > output.txt 2>&1
#ref(stderr-05.png)
**cshで標準出力、標準エラー出力を同じファイルに出力する方法 [#m3d14731]
./std >& output.txt
#ref(stderr-06.png)
#br
#htmlinsertpcsp(linux_ads_btm.html,linux-sp.html)
#br