導入
コマンドの結果は、ふつう画面に出ます。この「画面に出ていく文字の流れ」を 標準出力(standard output, stdout) と呼びます。第1章で使った echo と > は、実はこの流れを操作していたのです。ここでは出力の行き先を意識して、捨てる・ファイルへ回す・エラーと分ける、を押さえます。
説明
コマンドは、結果を2本の流れに分けて出します。ふつうの結果は 標準出力(stdout, 番号1)、エラーメッセージは 標準エラー出力(stderr, 番号2) です。画面では混ざって見えますが、行き先を別々に指定できます。
flowchart LR
C["コマンド"] -->|"標準出力 stdout(1)"| SC["画面"]
C -->|"標準エラー出力 stderr(2)"| SC
C -.->|"> file"| F["ファイルへ"]
C -.->|"> /dev/null"| N["/dev/null(捨て場)"]
echo は、渡した文字をそのまま標準出力へ流します。
echo "ログ開始"
> を付けると、標準出力を 画面ではなくファイルへ 向け直せます(リダイレクト)。>> は追記です。
echo "1行目" > memo.txt
echo "2行目" >> memo.txt
cat memo.txt
出力が 要らない ときは、特別な捨て場 /dev/null へ流します。ここへ送った文字は消えてなくなります。「動けばよくて出力は見たくない」処理でよく使います。
echo これは消える > /dev/null
標準エラー出力(stderr)は
2>で、別のファイルへ分けられます(例:コマンド 2> error.log)。「正常な結果はファイルへ、エラーだけは画面に残す」といった仕分けができる、というのがポイントです(このシミュレータでは stdout の行き先だけを試せます)。
やってみよう
echo "ログ開始" で標準出力に文字が出ることを確かめ、echo "1行目" > memo.txt → echo "2行目" >> memo.txt → cat memo.txt で「画面ではなくファイルへ流れる/追記される」動きを見ましょう。最後に echo これは消える > /dev/null を打つと、何も表示されない(=捨てられた)ことを確認してください。
演習
date の実行結果を画面に出さず、/dev/null に捨ててください。
ヒント1を見る
出力を捨てる先は /dev/null。向け先の指定は > です。
ヒント2を見る
date > /dev/null