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

Linuxの標準入力(stdin)とは?コマンドがデータを受け取る仕組みを初心者向けに徹底解説

Linuxの標準入力とは?コマンドが受け取る入力
Linuxの標準入力とは?コマンドが受け取る入力

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

生徒

「Linuxの勉強を始めたのですが、標準入力(ヒョウジュンニュウリョク)という言葉がよく出てきます。これって一体何のことですか?」

先生

「標準入力は、簡単に言うとコマンドがデータを受け取るための入り口のことですよ。普段、キーボードで文字を打ち込んでいる動作も、実は標準入力を使っているんです。」

生徒

「入り口ですか。マウスで操作するのとは違うんですか?」

先生

「そうですね。Linuxのターミナル(黒い画面)では、マウスよりも文字のやり取りが重要になります。標準入力を理解すると、複数のコマンドを組み合わせて複雑な処理ができるようになりますよ。」

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

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

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

1. 標準入力(stdin)の基本概念

1. 標準入力(stdin)の基本概念
1. 標準入力(stdin)の基本概念

Linux(リナックス)の世界では、プログラムやコマンドがデータをやり取りする仕組みが決まっています。その中で、外部からデータを受け取るための最も基本的なルートが標準入力(ヒョウジュンニュウリョク)です。英語では「Standard Input(スタンダード・インプット)」と呼び、省略して「stdin(エスティディイン)」と表記されることもあります。

初心者の方に分かりやすく例えるなら、標準入力は「郵便ポスト」のようなものです。ポストに手紙(データ)を入れると、家の中にいる人(コマンド)がその内容を読んで処理を開始します。このポストという共通の窓口があるおかげで、コマンドはどこからデータがやってくるのかを細かく気にせずに、流れてきたデータを処理することだけに専念できるのです。

通常、私たちがキーボードで文字を入力して「Enter」キーを押すと、その内容が標準入力としてコマンドに渡されます。しかし、後で詳しく説明するように、標準入力はキーボードだけでなく、ファイルや他のコマンドから渡されることもあります。

2. ファイル記述子(ファイルディスクリプタ)と番号

2. ファイル記述子(ファイルディスクリプタ)と番号
2. ファイル記述子(ファイルディスクリプタ)と番号

Linuxシステム内部では、標準入力を管理するために番号が割り振られています。この番号のことをファイル記述子(ファイルディスクリプタ)と呼びます。標準入力に割り当てられている番号は「0」番です。

なぜ番号が必要なのかというと、Linuxカーネル(中核ソフト)が「今、どの窓口からデータが来ているか」を正確に識別するためです。標準入力(0番)のほかにも、画面に出力するための標準出力(1番)、エラーを表示するための標準エラー出力(2番)というセットが存在します。これらをまとめて「標準ストリーム」と呼ぶこともあります。

シェル(bashやzshなど)を操作する際、この「0」という数字を直接意識することは少ないですが、リダイレクトなどの応用操作を行うときには非常に重要な知識となります。Linuxは「すべてをファイルとして扱う」という設計思想を持っているため、キーボードからの入力もシステム上は一つのファイルのように扱われているのが面白い特徴です。

3. キーボードからの入力を受け取るcatコマンド

3. キーボードからの入力を受け取るcatコマンド
3. キーボードからの入力を受け取るcatコマンド

標準入力を体験するのに最も適したコマンドはcat(キャット)コマンドです。通常、ファイルの中身を表示するために使われますが、引数を何も指定せずに実行すると、標準入力からのデータを待機する状態になります。

実際に、以下の手順で標準入力を試してみましょう。コマンドを入力したあと、文字を打ち込んでEnterを押すと、入力した内容がそのまま画面に返ってきます。これは、catが標準入力(キーボード)から受け取ったデータを、そのまま標準出力(画面)に流しているからです。


cat
Hello Linux!
Hello Linux!

この状態を終了するには、Ctrlキーを押しながらDキーを押します。これは「End Of File(エンド・オブ・ファイル)」、つまりデータの終わりを意味する記号を標準入力に送る操作です。これにより、コマンドに入力が終わったことを伝え、プログラムを終了させることができます。

4. リダイレクトでファイルから入力する

4. リダイレクトでファイルから入力する
4. リダイレクトでファイルから入力する

標準入力はキーボードだけではありません。リダイレクトという機能を使うことで、ファイルの内容をコマンドの標準入力として流し込むことができます。これには不等号の記号「<」を使用します。

例えば、事前に作成したテキストファイルの内容をコマンドに読み込ませる場合、以下のように記述します。これは「ファイルの中身を標準入力(0番)に繋ぎ変える」という操作を意味しています。


echo "Linux Learning" > test.txt
cat < test.txt
Linux Learning

上記の例では、まずechoコマンドでtest.txtというファイルを作り、その後にcatコマンドへ「<」を使ってファイルの内容を流し込んでいます。コマンド側から見れば、相手がキーボードなのかファイルなのかを区別せず、単に「標準入力からデータが来た」として処理を行っています。これが標準入力という仕組みの汎用性の高さです。

5. パイプラインによるコマンド間の連携

5. パイプラインによるコマンド間の連携
5. パイプラインによるコマンド間の連携

Linuxの最も強力な機能の一つが、コマンドとコマンドを繋ぐパイプ(縦棒の記号 |)です。これは、前のコマンドの実行結果(標準出力)を、次のコマンドの「標準入力」として直接渡す仕組みです。

例えば、現在のディレクトリにあるファイル一覧を取得するlsコマンドの結果を、特定の文字列を検索するgrep(グレップ)コマンドに渡す例を見てみましょう。


ls -l | grep ".txt"
-rw-r--r-- 1 user user 15 Apr  2 17:00 test.txt

この操作では、ls -lが出力したテキストデータが、grepコマンドの標準入力へと流し込まれています。grepは標準入力から受け取ったデータの中から「.txt」という文字が含まれる行だけを抜き出して表示しています。このように、標準入力はコマンド同士を接着剤のように繋ぎ、巨大な処理フローを構築する役割を担っています。

6. ヒアドキュメント(EOF)の活用

6. ヒアドキュメント(EOF)の活用
6. ヒアドキュメント(EOF)の活用

シェルスクリプトなどで、複数行にわたるテキストをまとめて標準入力としてコマンドに渡したい場合があります。このときに便利なのがヒアドキュメントという書き方です。記号「<<」の後に任意の終端文字列(一般的にはEOFが使われます)を指定します。

これにより、スクリプト内に直接、標準入力として扱いたい内容を記述できるようになります。いちいち一時ファイルを作成する必要がないため、設定ファイルの自動生成や長いメッセージの出力によく使われます。


cat << EOF
This is line 1.
This is line 2.
Welcome to the Shell World.
EOF
This is line 1.
This is line 2.
Welcome to the Shell World.

読み方は、EOF(イーオーエフ)は「End Of File」の略です。ヒアドキュメントを使うことで、対話型(タイワガタ)のコマンドに対しても、スクリプトから自動的に入力を与えることが可能になります。これは自動化(ジドウカ)において非常に重要な技術です。

7. 標準入力を使わないコマンドとの違い

7. 標準入力を使わないコマンドとの違い
7. 標準入力を使わないコマンドとの違い

すべてのコマンドが標準入力を使うわけではありません。例えば、lspwddateなどは、実行されるだけで情報を表示するタイプであり、通常は標準入力からのデータを必要としません。

一方で、grepsed(セド)、awk(オーク)、sort(ソート)といったテキスト処理コマンドは、標準入力をフル活用するように設計されています。初心者のうちは、「このコマンドは、今あるデータを加工するものか、それとも単に情報を表示するものか」を意識すると、標準入力の使いどころが分かってきます。

もし、コマンドを実行したあとに画面が止まって(入力を待っている状態になって)しまったら、そのコマンドは標準入力を求めているサインです。慌てずにCtrl + Cで中断するか、Ctrl + Dで入力を終了させてあげましょう。

8. 歴史と雑学:なぜ「標準」と呼ばれるのか

8. 歴史と雑学:なぜ「標準」と呼ばれるのか
8. 歴史と雑学:なぜ「標準」と呼ばれるのか

標準入力という概念は、1970年代に開発されたUNIX(ユニックス)というOS(オペレーティングシステム)に遡ります。当時のコンピュータは非常に高価で、複数の人が同時に利用する形が一般的でした。そこで、「データの入り口と出口を統一(トウイツ)すれば、どんなプログラムでも簡単に連携できるはずだ」という哲学が生まれました。

これを「UNIX哲学」と呼びます。一つのプログラムは一つのことだけをうまくやり、それらを標準的なストリームで繋ぎ合わせるという考え方です。この「標準」という言葉には、特定のハードウェアに依存しない、誰でもどこでも使える共通のインターフェースという意味が込められています。

現代のLinuxにおいても、この設計思想は変わっていません。クラウドサーバーの構築や、AIのデータ前処理など、高度なエンジニアリングの現場でも、この半世紀以上前に作られた「標準入力」という仕組みが土台となって動いています。基礎を学ぶことは、時代が変わっても通用するスキルを身につけることと同義なのです。

9. 実践的な練習問題:標準入力を使いこなす

9. 実践的な練習問題:標準入力を使いこなす
9. 実践的な練習問題:標準入力を使いこなす

最後に、少しだけ実戦に近い形で標準入力を触ってみましょう。sortコマンドは標準入力から受け取った行をアルファベット順や数値順に並べ替えるコマンドです。これにリダイレクトを組み合わせてみます。


cat << EOF > fruits.txt
Orange
Apple
Banana
EOF
sort < fruits.txt
Apple
Banana
Orange

まずヒアドキュメントで果物のリストを作成し、そのファイルをsortコマンドの標準入力に流し込みました。結果として、バラバラだった果物の名前が綺麗に並べ替えられて出力されましたね。これが、標準入力を活用したデータ処理の第一歩です。日々の業務や学習で「このデータを別のコマンドに渡したい」と思ったときは、ぜひ標準入力の存在を思い出してください。

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

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

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

まとめ

まとめ
まとめ

今回の記事では、Linuxシステムを自由自在に操るための根幹となる仕組み、「標準入力(stdin)」について詳しく解説してきました。標準入力は、単にキーボードから文字を打ち込むだけの窓口ではなく、ファイルや他のコマンドからのデータを受け取るための非常に柔軟な「データの入り口」であることがお分かりいただけたかと思います。ファイル記述子(ファイルディスクリプタ)の「0番」という番号で管理されているという内部的な仕組みから、リダイレクト(<)やパイプライン(|)を使った実践的な連携方法まで、Linuxの操作において欠かせない概念が凝縮されています。

特に、コマンドとコマンドを繋ぐ「パイプ」の仕組みは、標準入力を理解してこそ真価を発揮します。一つのコマンドでは単純な処理しかできなくても、標準出力を次のコマンドの標準入力へと受け渡していくことで、複雑なテキスト処理やログ解析、システム管理の自動化が驚くほど簡単に行えるようになります。これは「UNIX哲学」に基づいた、Linuxが長年愛され続けている理由の一つでもあります。また、ヒアドキュメント(<<EOF)のような高度な入力方法をマスターすることで、シェルスクリプトの作成能力も飛躍的に向上するでしょう。

初心者の方にとって、最初は「どこからデータが入ってきているのか」を意識するのは少し難しいかもしれません。しかし、catコマンドで入力を待機する状態を体験したり、sortgrepでデータを加工したりする練習を繰り返すことで、自然と標準入力の感覚が身についてきます。もしコマンドを実行して画面が止まってしまったら、それはコマンドが「標準入力からのデータ」を健気に待っているサインです。そんなときは、今回学んだCtrl + D(入力終了)やCtrl + C(強制終了)を思い出して操作してみてください。

標準入力を活用した実践コード例

ここで、これまでに学んだ内容を統合した少し応用的なコードを確認してみましょう。複数のコマンドをパイプで繋ぎ、標準入力を連鎖させることで、特定の条件に合致するデータを抽出して並べ替える処理を一行(ワンライナー)で記述する例です。


# 1. 複数の名前が入ったファイルを作成(ヒアドキュメント)
cat << EOF > member_list.txt
Tanaka
Sato
Suzuki
Abe
Takahashi
EOF

# 2. ファイルを標準入力から読み込み、'T'で始まる名前を探してアルファベット順に並べる
cat < member_list.txt | grep "^T" | sort
Takahashi
Tanaka

このように、標準入力を経由させることで、データの流れを自由にデザインできるようになります。Linuxの世界では、データは常に「流れるもの」として捉えるのが上達の近道です。今回学習した標準入力(0番)、そして対になる標準出力(1番)や標準エラー出力(2番)を組み合わせることで、あなたのターミナル操作はより一層、強力で効率的なものへと進化していくはずです。

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

生徒

「先生、ありがとうございました!標準入力って、最初はただのキーボード入力のことだと思っていましたが、ファイルやコマンド同士を繋ぐ『接着剤』のような役割も持っているんですね。」

先生

「その通りです!素晴らしい気づきですね。Linuxのコマンドたちが、お互いに手を取り合って大きな仕事ができるのは、この『標準入力』という共通の入り口があるからこそなんです。まさに、コマンド界の共通言語と言ってもいいかもしれません。」

生徒

「パイプ(|)を使って、前のコマンドの出口を次のコマンドの入り口に繋ぐという感覚が、ようやく掴めてきました。これを使えば、今まで手作業でやっていたファイルの整理や文字の検索も、一瞬で終わらせることができそうです!」

先生

「そう言ってもらえると嬉しいです。リダイレクトの『<』やヒアドキュメントの『<<』も、最初は記号の向きに戸惑うかもしれませんが、『データがどこからどこへ流れるか』を矢印の向きでイメージすると覚えやすいですよ。ファイル記述子の『0番』という数字も、余裕があれば頭の片隅に置いておいてくださいね。」

生徒

「はい!0番が入り口(入力)で、1番が出口(出力)でしたね。もしコマンドが反応しなくなっても、Ctrl + Dで『データの終わりだよ』と教えてあげればいいことも分かりました。これからどんどんコマンドを組み合わせて、自分なりの便利なツールを作ってみようと思います!」

先生

「その意気です!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
175
SMTPとは?初心者でもわかるメール送信の仕組みとプロトコルをやさしく解説!
No.7
Java&Spring記事人気No7
基本情報技術者試験
IMAP
163
IMAPとは?初心者でもわかるメール受信プロトコルの仕組みと使い方
No.8
Java&Spring記事人気No8
基本情報技術者試験
DDL
155
データベースのDDLとは?初心者にもわかる定義と使い方をやさしく解説!