カテゴリ: Linux 更新日: 2026/05/29

Linuxの標準出力(stdout)とは?初心者向けにストリームの基本とリダイレクトを徹底解説

Linuxの標準出力とは?通常の出力ストリーム
Linuxの標準出力とは?通常の出力ストリーム

先生と生徒の会話形式で理解しよう

生徒

「Linuxのコマンドを実行したとき、画面に文字が表示されますよね。あれってどういう仕組みなんですか?」

先生

「それは標準出力(ヒョウジュンシュツリョク)、英語でstdout(エスティーディーアウト)と呼ばれる仕組みが動いているんですよ。」

生徒

「ヒョウジュンシュツリョク…なんだか難しそうな名前ですね。ただ画面に出るだけじゃないんですか?」

先生

「実は、画面に出すだけでなくファイルに保存したり、別のコマンドに渡したりもできるんです。Linuxを使いこなす上で最も重要な基礎知識の一つなので、ゆっくり解説しますね。」

Linuxを初めて学ぶ人や、 OS・プロセス・メモリ管理・仮想マシン・コンテナの仕組みを図解で理解したい人におすすめの定番書籍です。

試して理解 Linuxのしくみを見る

※ Amazonアソシエイト広告リンク

1. 標準出力(stdout)の基礎知識と読み方

1. 標準出力(stdout)の基礎知識と読み方
1. 標準出力(stdout)の基礎知識と読み方

Linux(リナックス)の世界では、プログラムがデータをやり取りする通り道のことを「ストリーム」と呼びます。その中でも、もっとも頻繁に使われるのが標準出力(ヒョウジュンシュツリョク)です。英語では「Standard Output」と書き、略して「stdout(エスティーディーアウト)」と呼ばれます。

標準出力は、コマンドの実行結果をユーザーに伝えるための「メインの出口」です。通常、私たちがターミナル(端末)でコマンドを打つと、その結果が画面に表示されるのは、この標準出力の行き先がデフォルトで「画面(ディスプレイ)」に設定されているからです。

この仕組みを理解すると、bash(バッシュ)やzsh(ゼットエスエイチ)といったシェルを操作する際に、情報を自由にコントロールできるようになります。初心者のうちは「コマンドの結果が流れてくる専用の土管」のようなイメージを持つと分かりやすいでしょう。

2. 出力ストリームと3つの標準インターフェース

2. 出力ストリームと3つの標準インターフェース
2. 出力ストリームと3つの標準インターフェース

Linuxには、標準出力以外にも重要なデータの入り口と出口があります。これらは「標準ストリーム」として整理されており、それぞれに「ファイルディスクリプタ」という背番号のような数字が割り振られています。

名称(読み方) 英語表記 番号 役割
標準入力(ヒョウジュンニュウリョク) stdin 0 キーボードなどからの入力
標準出力(ヒョウジュンシュツリョク) stdout 1 通常の実行結果の出力
標準エラー出力(ヒョウジュンエラーシュツリョク) stderr 2 エラーメッセージの出力

なぜ「出力」が2種類あるのかというと、正常な結果とエラーメッセージを区別するためです。例えば、大量のデータを処理しているときにエラーだけを別のファイルに記録したい、といった要望に応えるために、出口が分かれています。今回のメインテーマである標準出力は、常に「番号1番」であることを覚えておきましょう。

3. echoコマンドで標準出力を確認してみよう

3. echoコマンドで標準出力を確認してみよう
3. echoコマンドで標準出力を確認してみよう

まずは、最もシンプルなコマンドを使って、標準出力がどのように画面に表示されるかを確認してみましょう。使うのは、指定した文字列をそのまま出力するecho(エコー)コマンドです。

このコマンドを実行すると、入力した文字がそのまま画面に返ってきます。これは、echoコマンドが受け取った文字を「標準出力(1番)」に流し、それが画面に表示された結果です。


echo Hello Linux
Hello Linux

次に、現在のディレクトリにあるファイル一覧を表示するls(エルエス)コマンドでも試してみましょう。これも標準出力を使っています。


ls
Documents Downloads Music Pictures

このように、普段何気なく使っているコマンドの多くは、この標準出力という仕組みを利用して私たちの目に触れるようになっています。

4. リダイレクトで標準出力の行き先を変える方法

4. リダイレクトで標準出力の行き先を変える方法
4. リダイレクトで標準出力の行き先を変える方法

標準出力の本当の凄さは、その「行き先」を自由に変更できる点にあります。この行き先を変更する操作をリダイレクト(リダイレクション)と呼びます。記号の>(不等号)を使うのが基本です。

例えば、コマンドの実行結果を画面に出さず、新しいテキストファイルに保存したい場合は以下のように記述します。これを「出力リダイレクト」と呼び、読み方はリダイレクト、またはリダイレクションと言います。


echo "これはテストです" > sample.txt
cat sample.txt
これはテストです

上記の例では、本来画面に出るはずだった「これはテストです」という文字列が、>の働きによってsample.txtというファイルの中に吸い込まれていきました。その後に中身を確認するcat(キャット)コマンドを実行すると、正しく保存されていることが分かります。なお、>を使うと、すでにファイルがある場合は中身が上書き(オーバーライト)されてしまうので注意してください。

5. 追記リダイレクトと標準出力の活用

5. 追記リダイレクトと標準出力の活用
5. 追記リダイレクトと標準出力の活用

既存のファイルの中身を消さずに、標準出力の内容を最後に追加したい場合もあります。そのときは、記号を2つ重ねた>>を使います。これを「追記リダイレクト」と呼びます。

ログファイルを作成したり、日々の作業記録を一つのファイルにまとめたりするときに非常に便利です。実際にどのように動くか、以下のコードで見てみましょう。


echo "一行目のデータ" > data.txt
echo "二行目のデータ" >> data.txt
cat data.txt
一行目のデータ
二行目のデータ

もしここで>を使ってしまうと、一行目のデータは消えてしまいます。初心者の方は「一つなら上書き、二つなら追記」と暗記してしまうのがコツです。このように標準出力をファイルへ流し込む技術は、Linuxのシェルスクリプトを作成する際にも欠かせないテクニックです。

6. パイプラインで次のコマンドに標準出力を渡す

6. パイプラインで次のコマンドに標準出力を渡す
6. パイプラインで次のコマンドに標準出力を渡す

標準出力の行き先は、ファイルだけではありません。別のコマンドの「入り口(標準入力)」へと直接つなぐことができます。これには|(縦棒)という記号を使い、これをパイプまたはパイプラインと呼びます。

例えば、ファイルの一覧を表示するlsコマンドの結果が多すぎて困ったときに、特定の文字が含まれるものだけを抽出するgrep(グレップ)コマンドに標準出力を渡してみましょう。


ls /etc | grep net
networks
networks.conf

この操作では、ls /etcの結果(標準出力)が画面に出る前にパイプラインを通って、grep netというコマンドに届けられています。Linuxの哲学には「一つのプログラムには一つのことをうまくやらせる」という考え方があり、このパイプによって小さなコマンドを組み合わせて複雑な処理を実現しています。まさに標準出力は、コマンド同士を繋ぐ接着剤のような役割を果たしているのです。

7. 標準エラー出力との違いを意識しよう

7. 標準エラー出力との違いを意識しよう
7. 標準エラー出力との違いを意識しよう

初心者がよくつまづくのが、標準出力のリダイレクトをしたはずなのに、画面にメッセージが出てしまう現象です。これはそのメッセージが「標準エラー出力(stderr)」として出されているために起こります。

例えば、存在しないディレクトリをlsしようとするとエラーになります。このとき、リダイレクトを使ってもエラーメッセージはファイルに入らず、画面に表示されます。


ls /nothing > output.txt
ls: cannot access '/nothing': No such file or directory

この「ls: cannot access...」という文字は、標準出力(1番)ではなく標準エラー出力(2番)から出ています。もしエラーも一緒にファイルに保存したい場合は、2>&1という特殊な書き方をして「2番を1番に合流させる」という指示を出します。これは少し応用編ですが、標準出力には「正常なデータしか流れない」という特性を知っておくことが、トラブルシューティングの第一歩になります。

8. ルート権限での標準出力とリダイレクトの注意点

8. ルート権限での標準出力とリダイレクトの注意点
8. ルート権限での標準出力とリダイレクトの注意点

システムの設定ファイルを書き換えるときなど、管理者権限(ルート権限)が必要な場面があります。しかし、ここで一つ注意点があります。sudoコマンドを使っても、リダイレクト先のファイル書き込みには権限が及ばないことがあるのです。

以下の例は、ルート権限が必要なシステム領域に標準出力を書き込もうとした際の挙動です。ルートユーザー(プロンプトが#の状態)で実行する場合は問題ありませんが、一般ユーザーがsudoを付けても失敗する場合があります。そのようなときは、tee(ティー)コマンドという「標準入力を読み込んで標準出力とファイルの両方に出す」コマンドを組み合わせて使います。


echo "nameserver 8.8.8.8" > /etc/resolv.conf
cat /etc/resolv.conf
nameserver 8.8.8.8

管理者として操作するときは、標準出力がどこに向かっているのか、そしてその書き込み先に正しい権限があるのかを常に意識するようにしましょう。特にサーバー構築やスクリプト運用では、この権限周りの知識が非常に重要になります。

9. 標準出力を捨てる? /dev/nullの不思議な役割

9. 標準出力を捨てる? /dev/nullの不思議な役割
9. 標準出力を捨てる? /dev/nullの不思議な役割

最後に、少し面白い雑学を紹介します。Linuxには「ゴミ箱」のような特殊なファイル、/dev/null(スラッシュ・デブ・ヌル)が存在します。ここに標準出力をリダイレクトすると、そのデータは跡形もなく消え去ります。

「せっかくの結果を捨てるなんて、何に使うの?」と思うかもしれませんが、スクリプトを実行するときに、画面に余計なメッセージを出したくない場合に非常によく使われます。読み方は、スラッシュ・デブ・ヌル、あるいは単にヌルデバイスと呼びます。


ls -R / > /dev/null 2>&1

このコマンドは、全ファイルのリストアップを試みますが、結果もエラーもすべて/dev/nullに投げ捨てているため、画面には何も表示されません。このように、標準出力をあえて「捨てる」という選択肢があるのも、Linuxの柔軟で面白いところです。標準出力、標準エラー出力、そしてリダイレクトとパイプ。これらの基礎をマスターすれば、あなたのLinux操作スキルは飛躍的に向上するはずです。

LPICレベル1の合格を目指している人や、 Linuxコマンド・シェル・ネットワーク・セキュリティの試験対策を効率よく進めたい人におすすめの定番問題集です。

Linux教科書 LPICレベル1 スピードマスター問題集を見る

※ Amazonアソシエイト広告リンク

まとめ

まとめ
まとめ

Linuxシステムを自由自在に操るための第一歩として、標準出力(stdout)の仕組みを理解することは非常に重要です。この記事では、コマンドの実行結果がどのように画面に表示され、そしてどのようにしてファイルや別のコマンドへと受け渡されるのか、その基礎から応用までを詳しく解説してきました。Linuxカーネルとシェルの間で行われるデータのやり取りは、一見複雑に見えますが、「ストリーム」というデータの流れを意識することで、驚くほどシンプルに整理できます。

標準出力(stdout)とリダイレクトの重要ポイント

ここで、これまでに学んだ内容を振り返ってみましょう。以下のポイントを押さえておくことで、日々のターミナル操作やシェルスクリプト作成の効率が劇的に向上します。

  • 標準出力はファイルディスクリプタの「1番」:正常な実行結果が流れるメインの出口です。
  • リダイレクト「>」と「>>」の使い分け:新規作成・上書きなら「>」、既存の末尾に追加なら「>>」を使います。
  • パイプ「|」によるコマンド連携:あるコマンドの標準出力を、別のコマンドの標準入力として直接繋ぎます。
  • 標準エラー出力(stderr)との分離:エラーメッセージは「2番」から出るため、個別に制御が可能です。
  • 特殊デバイス /dev/null:不要な出力を完全に消去するための「ブラックホール」として機能します。

実戦的なサンプルプログラムとコマンド活用例

実際の開発現場やサーバー運用では、標準出力を単に表示するだけでなく、ログとして記録したり、特定のキーワードをフィルタリングしたりする作業が頻繁に発生します。ここでは、bashを用いた実用的な活用例を紹介します。

以下のスクリプト例では、ディレクトリ内のファイル数をカウントし、その結果を日付とともにログファイルに追記リダイレクトしています。また、エラーが発生した場合にはエラー専用のログに書き出すように設定しています。


#!/bin/bash

# 現在の日時を取得して標準出力に表示
echo "バックアップ処理を開始します: $(date)"

# ファイル一覧を取得し、その行数をカウントしてファイルに追記
# 標準出力を backup_log.txt へ、標準エラー出力を error_log.txt へ振り分け
ls -l /var/www/html > /tmp/file_list.txt 2> error_log.txt

if [ $? -eq 0 ]; then
    echo "ファイルリストの作成に成功しました。" >> backup_log.txt
else
    echo "エラーが発生しました。error_log.txtを確認してください。"
fi

このように、標準出力(1)と標準エラー出力(2)を明示的にリダイレクトすることで、プログラムの動作状況を正確に把握できるようになります。特に、自動実行されるバッチ処理やcronジョブでは、この「出力の管理」がトラブル解決の鍵となります。

ステップアップのためのヒント

標準出力をマスターしたら、次は「標準入力(stdin)」をより深く学んでみましょう。catgrepawksedといったコマンドをパイプラインで繋ぐことで、テキストデータの加工や抽出が自由自在になります。Linuxの操作は、単一のコマンドを覚えることではなく、複数のコマンドを「標準出力」という鎖で繋いで、自分だけの強力なツールを作り上げることにあるのです。

Ubuntu、CentOS、Debianなど、どのディストリビューションを使っていても、この標準ストリームの概念は共通です。まずは自分の環境で、色々なコマンドの結果をファイルに書き出したり、/dev/nullに捨てたりして、その挙動を肌で感じてみてください。

先生と生徒の振り返り会話

生徒

「先生、ありがとうございました!標準出力って、ただ画面に出るだけじゃなくて、データの通り道そのものを指しているんですね。リダイレクトを使ってみたら、コマンドの結果が魔法みたいにファイルに吸い込まれていって感動しました!」

先生

「その感動こそがLinux習得の原動力ですよ。特に、上書きの>と追記の>>の違いは理解できましたか?初心者のうちは、大事な設定ファイルを>で上書きして消してしまう失敗が多いので気をつけてくださいね。」

生徒

「はい、そこは絶対に忘れないようにします。あと、エラーメッセージがリダイレクトしても画面に出てきたときは焦りましたけど、あれは『2番』という別の出口から出ていたからなんですね。合流させる2>&1という書き方も、いつか使いこなせるようになりたいです。」

先生

「素晴らしい洞察力です。エラーを分けることで、正常な処理結果だけを綺麗に残せるようになるんです。最後にお話しした/dev/nullも、静かなスクリプトを作るときには欠かせません。この『標準出力』という概念を武器にすれば、これからのLinux学習がぐっと楽になりますよ。」

生徒

「次はパイプを使って、もっと複雑なデータのフィルタリングに挑戦してみます!Linuxのコマンド同士が繋がる感覚が、パズルみたいで面白いです。」

先生

「その調子です。標準出力はまさにコマンド同士を結ぶ接着剤ですからね。色々な組み合わせを試して、自分なりの効率的な操作方法を見つけていってください!」

カテゴリの一覧へ
新着記事
New1
Linux
Linuxの/proc/meminfoとは?メモリ使用状況を確認する仕組みを初心者向けに徹底解説
新規投稿
New2
情報セキュリティマネジメント試験
RATとは?リモートアクセス型ウイルスの仕組みと対策を初心者向けに解説
更新記事
New3
基本情報技術者試験
ビッグデータとは?初心者でもわかる大量データ活用の基本と活用事例
更新記事
New4
基本情報技術者試験
クライアントとは?初心者でもわかるコンピュータの基本用語をやさしく解説
更新記事
人気記事
No.1
Java&Spring記事人気No1
基本情報技術者試験
NIC
307
NICとは何か?初心者にもわかるネットワークインターフェースカードの基本
No.2
Java&Spring記事人気No2
基本情報技術者試験
セグメントとは?ネットワークの基本単位を初心者向けにやさしく解説
No.3
Java&Spring記事人気No3
基本情報技術者試験
16進数とは?初心者にもわかる意味・読み方・変換方法をやさしく解説!
No.4
Java&Spring記事人気No4
基本情報技術者試験
DHCP
233
DHCPとは?初心者でもわかるIPアドレス自動割り当ての仕組み
No.5
Java&Spring記事人気No5
基本情報技術者試験
マイクロ(μ)とは?初心者にもわかる単位の意味と使い方をやさしく解説
No.6
Java&Spring記事人気No6
基本情報技術者試験
SMTP
174
SMTPとは?初心者でもわかるメール送信の仕組みとプロトコルをやさしく解説!
No.7
Java&Spring記事人気No7
基本情報技術者試験
IMAP
163
IMAPとは?初心者でもわかるメール受信プロトコルの仕組みと使い方
No.8
Java&Spring記事人気No8
基本情報技術者試験
DDL
155
データベースのDDLとは?初心者にもわかる定義と使い方をやさしく解説!