本文へスキップ
BecomeCoder

Linuxコマンドコース · 第6章 自動化とシェルスクリプト · レッスン30

標準出力 ― 出力の行き先を操る

ブラウザで完結

導入

コマンドの結果は、ふつう画面に出ます。この「画面に出ていく文字の流れ」を 標準出力(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.txtecho "2行目" >> memo.txtcat memo.txt で「画面ではなくファイルへ流れる/追記される」動きを見ましょう。最後に echo これは消える > /dev/null を打つと、何も表示されない(=捨てられた)ことを確認してください。

演習

date の実行結果を画面に出さず、/dev/null に捨ててください。

ヒント1を見る

出力を捨てる先は /dev/null。向け先の指定は > です。

ヒント2を見る

date > /dev/null

実際に動かしてみよう

下の端末にコマンドを打って Enter を押すと、その場で結果が返ります。本文で出てきたコマンドを実際に試しながら進めましょう(ファイルを消しても「最初からやり直す」で元に戻ります)。

Linux シェル(シミュレート)

ブラウザ内でコマンドを試せる仮想シェルを読み込みます(本物のLinuxカーネルではなく学習用の再現です)。
スクロールして表示された時点でも自動で読み込まれます。