標準入出力・リダイレクション・/dev/null・パイプ

ファイル(file)

コンピュータ上で記録・管理される情報の単位。UNIX/ Linux, Windows, Mac OS X等ほとんどのコンピュータシステムは、ファイルによるデータ管理を行っている。

標準入出力

コマンド(その実体であるプログラム)には、何らかの入力と出力がある。これを標準入力、標準出力と呼ぶ。

リダイレクション(re-direction)

通常、標準入出力はキーボードとディスプレイに結び付けられている。しかし、この結びつきを変更することができる。これをリダイレクションと呼ぶ。

標準入出力の数値

入出力チャンネル 数値
標準入力 0
標準出力 1
標準エラー出力 2
  • コマンド < ファイル名
    標準入力の入力元をキーボードではなくファイルに変更。
  • コマンド > ファイル名
    標準出力の出力先をディスプレイではなくファイルに変更。出力先のファイルが既存だった場合には、ファイルの先頭から結果を書き込む。
  • コマンド >> ファイル名
    標準出力の出力先をディスプレイではなくファイルに変更。出力先のファイルが既存だった場合には、ファイルの末尾に書き足す。
  • コマンド < 入力元ファイル名 > 出力先ファイル名 または
    コマンド > 出力先ファイル名 < 入力元ファイル名
    入出力の両方を変更する。
  • コマンド 2> ファイル名
    標準エラー出力の出力先をディスプレイではなくファイルに変更。出力先のファイルが既存だった場合には、ファイルの先頭から結果を書き込む。
  • コマンド > ファイル名 2> エラーファイル名
    標準出力と標準エラー 出力をそれぞれ別のファイルにリダイレクト。
  • コマンド > ファイル名 2>&1 または
    コマンド &> ファイル名
    標準出力と標準エラー出力を1つのファフィルにまとめてリダイレクト。

/dev/null

スペシャルファイル。入力先として指定しても何も内容を返さない。出力先として指定しても、書き込んだデータはどこにも保存されずに消えてなくなる。

コマンド < /dev/null
標準入力を空っぽにする(コマンドのテスト)
ls /xxxxx > /dev/null
標準出力を捨てる(コマンドの表示結果が大量にあり、標準エラー出力に表示されるエラーメッセージだけを読みたいとき)
ls /xxxx 2> /dev/null
エラーメッセージを非表示にしてコマンドの通常の出力結果だけを読み取る(エラーメッセージが大量に出るとき、あらかじめわかっているエラーメッセージが表示されるとき)
ls /xxxx > /dev/null 2>&1
標準出力と標準エラー出力を両方とも捨てる(あらかじめわかっている不要なメッセージを非表示にするとき、コマンドの実行時間を測る際メッセー出力を抑止したいとき)

パイプ

あるプログラムの標準出力を、他のプログラムの標準入力に接続すること。
コマンド | コマンド

参考資料
新しいLinuxの教科書(三宅秀明・大角祐介著) 標準入出力とパイプライン
stdio.pdf
Redirection( Shell ) 参考:Linuxでのパイプの活用方法