標準入出力とは?
プログラムがデフォルトで利用するデータの標準的な入出力元のことです。あくまで標準の入出力先の話なのでそれぞれパイプ等で入出力先を指定すればコマンド間の連携を行うようにすることも可能です。
標準入力
プログラムのデフォルトの入力元になります。
標準出力
プログラムのデフォルトの出力先になります。
標準エラー出力
プログラムのエラーメッセージの出力先になります。
リダイレクト
標準入出力先を変更する機能です。
入力のリダイレクト
例えば下記のようにすれば入力元をファイルにできたりします。
1 |
コマンド < 入力元(ファイル名等) |
出力のリダイレクト
下記のようにすれば出力先をファイルにできます。
1 |
pwd > 出力先(ファイル等) |
エラー出力のリダイレクト
下記のようにするとファイルにエラー内容を出力できます。なお、2というのは「OSが識別している標準エラー出力の数値」になります。
1 |
pwd 2> 出力先(ファイル名等) |
出力とエラー出力をまとめる。
1は標準出力を示しています。リダイレクト出力した後に、「2>&1」を指定すると標準エラー出力も合わせて出力されます。
1 |
pwd > 出力先(ファイル名等) 2>&1 |
/dev/nullとは?
入力元としても出力先としても何も表示されない特殊なファイルのことです。Unix系のOSでは全般的によく使われます。
入力元として使う場合
例
1 |
cat < /dev/null |
用途
コマンドの検証等で「入力を空にしてテストをしたい」場合に使用します。ただ、入力として使うことは可能ですが、実際の所入力元として使うことはほぼありません。使うとすれば出力先で使うことがメインになります。
出力先として使う場合
ぶっちゃけ「/dev/null」をよく使うケースとしては出力先として指定するこちらのケースの場合です。
例
1 |
ls /test > /dev/null |
用途
コマンドの出力結果を非表示にしたい場合に使います。例えば下記のような場合は非表示にしたいケースでしょう。
- 結果が大量に出力される場合
- 結果を表示する必要性がなく処理を早く終わらせたい場合
標準出力と標準エラー出力を捨てたい場合
以下のように指定します。
1 |
ls /test &>/dev/null |
以下の文と同義です。
1 |
ls /test >/dev/null 2>&1 |
標準出力だけでなく、エラー内容も結果として出力したくないよといったケースでは使えます。(エラーの有無はあまり関係ないバッチでは使える。)
この記事へのコメントはありません。