標準出力と標準エラー出力 (stderr) へコマンドプロンプトにてリダイレクト、パイプの使い方

ITで知っておくべき知識
スポンサーリンク

標準出力と標準エラー (stderr) へコマンドプロンプトでリダイレクト、パイプの使い方をまとめてみました。

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

スポンサーリンク

標準ストリーム(Standard Streams)

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

 

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

の3種類あります。

 

プログラムやコマンドのエラーは標準出力ではなくて、標準エラー出力に出力されます。

 

標準ストリームのことをファイルディスクリプタとかファイル記述子とも呼ぶこともありますが、厳密には標準ストリームとファイルディスクリプタは別の概念です。

 

標準入力のファイルディスクリプタは0、

標準出力のファイルディスクリプタは1、

標準エラー出力のファイルディスクリプタは2

です。

 

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

リダイレクトに使う記号は
>

>>

<
です。

 

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

 

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

 

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

 

標準エラー出力を書きだすには 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のコマンドプロンプトでも同様に使うことが可能です。

 

パイプ (pipe)

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

パイプに使う記号は
|
です。

 

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

 

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

Unix、Windowsコマンドプロンプトともに、概念は同じで、似たような書式で使うことができます。

何かをコンパイルして、エラーがダダって出たときなどリダイレクトとパイプをつなぎ合わせて使うととても便利です。

 

UNIXのシェルについてのおすすめの本

 

↓UNIXのシェル、標準入出力についてのおすすめの本はコチラ 

UNIXシェル

 

コメント

  1. […] 標準出力と標準エラー出力 (stderr) へコマンドプロンプトにてリダイレクト… […]