このエントリーをはてなブックマークに追加


標準エラー出力をファイルに出力する方法

コマンドなどの出力結果をリダイレクトで出力すると標準エラー出力はターミナルに出力されたりファイルには保存されません。
以下、標準エラー出力に出力されたメッセージをファイルに保存する方法を記します。


関連資料

テストコード

以下に記す簡単なC言語のサンプルソースを作りました。

#include <stdio.h>

int main()
{
  fprintf(stdout, "stdut MESSAGE\n");
  fprintf(stderr, "stderr MESSAGE\n");
  return 0;
}
  • コンパイル 以下のコマンドでコンパイルすると実行ファイルstdが作成されます。
    gcc std.c -o std
    stderr-01.png
     
  • ターミナルで実際に実行させてみます。 下図の通り、ターミナル上にstdout, stderrともに出力されます。
    stderr-02.png

実験(実行例)

以下の実験で使用したシェルはbashになります。cshでは意図した動作になりませんのでご注意ください。

標準出力と標準エラー出力を別々のファイルに出力する

以下の例では、標準出力をstdout.txtファイルに出力し標準エラー出力をstderr.txtファイルに出力します。
1(省略可)が標準出力を示し、2が標準エラー出力を示しています。

./std 1> stdout.txt 2> stderr.txt

or

./std > stdout.txt 2> stderr.txt
stderr-03.png

標準エラーのみファイルに出力する

以下の例では標準エラー出力のみstderr.txtに出力し標準出力はターミナルに表示します。

./std 2> stderr.txt
stderr-04.png

標準出力と標準エラー出力をおなじファイルに出力する

以下の例では、標準出力、標準エラー出力を同じファイルに出力します。

./std > output.txt 2>&1
stderr-05.png

cshで標準出力、標準エラー出力を同じファイルに出力する方法

./std >& output.txt
stderr-06.png
 

 

添付ファイル: filestd.c 516件 [詳細] filestderr-01.png 586件 [詳細] filestderr-03.png 700件 [詳細] filestderr-05.png 658件 [詳細] filestderr-06.png 592件 [詳細] filestderr-02.png 626件 [詳細] filestderr-04.png 693件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-03-20 (金) 22:27:15