標準入出力・リダイレクション・/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でのパイプの活用方法