UnixやLinuxでコマンドを使っていると、標準出力とか、標準エラー出力などについての知識がなかったので、簡単にまとめてみます。
ついでに/dev/nullについても。
####用語の説明
はじめにそれぞれの用語について、説明します。
項目 | 説明 |
---|---|
標準出力 | 出力がディスプレイに表示される。ファイルディスクリプタは1番 (シェルで実行時に正常終了時のメッセージのこと) |
標準エラー出力 | 出力がディスプレイに表示される。ファイルディスクリプタは2番 (シェルで実行時に発生したエラー・メッセージのこと) |
/dev/null | 出力が破棄され、なにも表示されない。イメージはゴミ箱。 |
サンプル
- 標準出力
$ echo sample
sample
- 標準エラー出力
# 存在しないディレクトリファイルを指定してみる。
$ ls error
ls: cannot access error: そのようなファイルやディレクトリはありません
/dev/nullへ出力してみる。
$ echo sample >& /dev/null
→何もおこらない
$ ls error >&/dev/null
→何もおこらない
ちょっと、わかりづらいので、シェルスクリプトを作成します。
(sample.sh)
sample.sh
#!/bin/bash
# 標準出力(1)として、表示します。
echo "標準出力"
# 標準エラー出力(2)として、表示します。
# ※ 1→2にリダイレクトすることで、標準エラー出力として表示します。
echo "標準エラー出力" 1>&2
exit 0
実行結果
# 1 を/dev/nullに捨てることで、2だけが表示されます。
$ ./sample.sh 1>/dev/null
標準エラー出力
# 2 を/dev/nullに捨てることで、1だけが表示されます。
$ ./sample.sh 2>/dev/null
標準出力