Linuxのパイプ(|)とは何をしているのか?標準入力・標準出力から理解する




はじめに

Linuxを触り始めて、
ある日こんなコマンドを見かけます。

ls | grep txt

……正直、最初は
「なんで | があるの?」
「これ何を繋いでるの?」
ってなりますよね。

自分も最初は、

  • なんとなく使っている

  • コピペでは動く

  • でも説明はできない

という状態でした。

この パイプ(|
実はLinuxらしさが詰まった重要な概念で、
LinuC試験でも、実務でも、必ず出てきます。

この記事では、

  • パイプとは何をしているのか

  • 標準入力・標準出力との関係

  • なぜこの仕組みが便利なのか

を、「なるほどそういうことか」になるまで解説します。


パイプ(|)とは何か?

パイプ(|)は、
コマンドとコマンドを繋ぐ記号です。

正確に言うと、

前のコマンドの「標準出力」を、
次のコマンドの「標準入力」に渡す

これをやっています。


標準入力・標準出力を超ざっくり理解する

まずはここを押さえます。

Linuxのコマンドには、最初から次の3つがあります。

種類 意味
標準入力 入力されるデータ
標準出力 通常の出力
標準エラー出力 エラー用の出力

この中で、
**パイプが扱うのは「標準出力 → 標準入力」**です。


例:ls コマンド

ls

これを実行すると、

  • ファイル一覧を表示する

  • 表示されている内容は「標準出力」

つまり、
画面に表示されている文字列 = 標準出力
と思ってOKです。


パイプを使うと何が起きるのか

次に、このコマンドを見てみます。

ls | grep txt

処理の流れはこうです。

  1. ls がファイル一覧を標準出力に出す

  2. その出力を grep txt の標準入力に渡す

  3. txt を含む行だけが表示される

ここで重要なのは、

👉 ls の結果は画面に直接出ていない
👉 grep に渡されている

という点です。


図でイメージするとこう

イメージとしては、こんな感じです。

ls ──(標準出力)──▶ grep txt ──▶ 画面

| は、
コマンド同士を直結するホース
みたいなものだと思うと分かりやすいです。


なぜわざわざパイプを使うのか?

理由はシンプルです。

① コマンドを小さく保てる

Linuxの考え方は、

  • 1つのコマンドは1つの仕事

  • 組み合わせて使う

という思想です。

  • ls は一覧を出すだけ

  • grep は絞り込むだけ

👉 役割を分けて、後から繋ぐ


② ファイルを作らなくていい

パイプがなければ、

  1. lsの結果をファイルに保存

  2. そのファイルをgrepで読む

という流れになります。

パイプを使えば、
その場でデータを渡せるので効率的です。


よくある勘違い

パイプは「画面の表示」を渡している?

❌ 画面そのものを渡しているわけではありません。
標準出力というデータの流れを渡しています。

画面表示は、
最終的な標準出力の行き先なだけです。


パイプは何個でも繋げられる

これは正解です。

cat access.log | grep error | sort | uniq

こんなふうに、

  • 出す

  • 絞る

  • 並べる

  • まとめる

と、レゴブロックみたいに組み合わせられるのがLinuxの強さです。


LinuC試験との関係

LinuCでは、

  • 標準入力

  • 標準出力

  • パイプ

  • リダイレクト

このあたりは セットで理解している前提で出題されます。

特に、

パイプは標準出力を標準入力に渡す

これは ほぼ暗記レベルの基本事項です。


注意点

エラー出力はそのままでは渡らない

パイプが渡すのは
標準出力のみです。

エラー出力は別扱いなので、
最初は

「思った結果にならない」

と感じることもありますが、
ここは そういう仕様だと覚えてOKです。


まとめ

パイプ(|)は、
LinuxをLinuxたらしめている仕組みです。

ポイントを整理すると、

  • パイプはコマンドを繋ぐ

  • 標準出力を標準入力に渡す

  • 画面表示を渡しているわけではない

  • 小さなコマンドを組み合わせる思想

  • LinuC試験にも出てくる基礎知識

最初はピンとこなくても、
一度理解すると
コマンドの見え方が一気に変わります。

コメント

タイトルとURLをコピーしました