標準出力と標準エラー出力を同時に(または別ファイルに)リダイレクトする方法

シェアする

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

スポンサードリンク

標準ストリーム(Standard Streams)

標準ストリームとは、UnixやWindowsのコマンドプロンプトにおいて、プログラムとその実行環境において事前に接続された入出力用のチャネルのことです。

  • 標準入力 stdin
  • 標準出力 stdout
  • 標準エラー出力 stderr

の3種類あります。
プログラムやコマンドのエラーは標準出力ではなくて標準エラー出力に出力されます。
標準ストリームのことをファイルディスクリプタとかファイル記述子とも呼ぶこともありますが、厳密には標準ストリームとファイルディスクリプタは別の概念です。
標準入力のファイルディスクリプタは0、標準出力のファイルディスクリプタは1、標準エラー出力のファイルディスクリプタは2です。

スポンサードリンク

標準ストリームを書き出し取り込みにはリダイレクトを使う

標準入力を取り込むには<を使います。

標準出力を書きだすには>を使います。

標準出力でファイルに上書きせず追加で書き出すには>>を使います。

標準エラー出力を書きだすには2>を使います。2はファイルディスクリプタの番号です。

標準出力をファイル名Aと標準エラー出力をファイル名Bのように別ファイルにリダイレクトするには以下のようにします。2はファイルディスクリプタの番号です。

標準出力と標準エラー出力を同じファイルにリダイレクトするには以下のようにします。1や2はファイルディスクリプタの番号です。2>&1でファイルディスクリプタ2の出力先をファイルディスクリプタ1の出力先と同じにするという意味になります。

実行例は次の通りです。

空のフォルダでdir aaa.txtと実行した結果、標準出力をbbb.txtに、標準エラー出力をccc.txtに書き出します。
dir aaa.txtというコマンドは標準出力と標準エラー出力に結果を書き出すとも言うことができます。
ccc.txtの中身は「ファイルが見つかりません」と書き込まれています。
この方法はエラーが大量に発生した時などによく使います。
UnixでもWindowsのコマンドプロンプトでも同様に使うことが可能です。

スポンサードリンク

パイプ

パイプはあるコマンドの結果を別のコマンドに橋渡ししてくれます。パイプには|を使います。

実行例は以下の通りです。

 

リダイレクトとパイプのまとめ

Unix、Windowsコマンドプロンプトともに、概念は同じで、似たような書式で使うことができます。
何かをコンパイルして、エラーがダダって出たときなどリダイレクトとパイプをつなぎ合わせて使うととても便利です。

シェアする

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

フォローする

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です