#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

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS