本記事の構成および論理分析にはAI(人工知能)を使用しています。情報の正確性は、システム管理者(UNIXユーザー)による手動検証済みです。
出力の行き先を変える | リダイレクトとパイプの基本をやさしく整理する|UNIX Cafe

ターミナルを学び始めたとき、> や | といった記号は少しとっつきにくく感じるものです。ただ、この記事で大切なのは記号そのものではなく、「結果をどこへ送るか」という考え方です。
今回は、画面に出るはずの結果をファイルへ送るリダイレクトと、あるコマンドの結果を次のコマンドへ渡すパイプを整理します。ここが分かると、コマンドを1個ずつ使うだけでなく、つなげて使う感覚が見えてきます。
動画で流れを先に見たい方は、UNIX Cafe の YouTube もあわせてどうぞ。記事と同じく、初心者向けのやさしい流れで 、ターミナルの最初の一歩を確認できます。
📝 この記事で学べること
>と>>の違い|が何をしているのか- 出力先を変える考え方と、次へ渡す考え方の違い
- これまで学んだコマンドをつなげて使う最初の一歩
リダイレクトとパイプは「結果の行き先」を変える仕組み
ターミナルでコマンドを実行すると、結果は画面に表示されます。それで十分な場面がほとんどですが、結果をファイルに保存したいときや、次のコマンドにそのまま渡したいときもよくあります。
そのときに使うのが >、>>、| です。役割を先に整理しておくと、記号への苦手意識はかなり薄れます。
| 記号 | 役割 | 考え方 |
|---|---|---|
| > | 出力をファイルへ書き出す | 今までの内容を置き換える |
| >> | 出力をファイルへ追記する | 今ある内容の後ろに足す |
| | | 出力を次のコマンドへ渡す | 結果をそのまま次へ流す |
リダイレクトは「画面の結果を別の場所へ送る」考え方
リダイレクトは、画面に出るはずの結果を別の場所へ送る仕組みです。もっともよく使うのは、結果をファイルに保存する形です。
✔ ポイント
リダイレクトは、表示される内容そのものを変えるのではなく、表示されるはずのものの行き先を変える仕組みです。まずはこの見方を持つだけで十分です。
> は新しく書き出す
> は、コマンドの結果を指定したファイルへ書き出します。同じ名前のファイルがすでにある場合、中身は新しい結果で上書きされます。
$ ls > file-list.txtこの例では、ls の結果が画面ではなく file-list.txt に保存されます。あとで見返したい一覧を残したいときに便利です。
>> は後ろに追記する
>> は、結果をファイルの末尾へ追加します。今ある内容を消さずに、あとから1行ずつ足したいときに向いています。
$ date >> work-log.txt
$ pwd >> work-log.txt作業した時刻や場所をメモとして残したいときに使いやすい形です。ログやメモを少しずつ積み重ねる用途でよく登場します。
⚠️ 注意
> は上書きです。元の内容を残したいファイルに対して実行すると、以前の内容は消えてしまいます。元の内容を残したいときは、上書きしてしまう前に、一度別名で新規ファイルに保存して、動作を確かめておくと安心です。
パイプは「1つ目の結果を2つ目のコマンドへ渡す」考え方
パイプは、あるコマンドの結果を次のコマンドへ直接渡す仕組みです。ファイルにいったん保存しなくても、そのまま次の処理へ流せます。
$ history | grep viこの例では、history が出した一覧を grep に渡して、vi を含む行だけを取り出しています。前回学んだ履歴の内容を、以前の回で学んだ grep につないで使っている形です。
パイプのポイントは、「前のコマンドの結果が、次のコマンドの入力になる」と考えることです。コマンドを単体で覚えるだけでなく、役割ごとに組み合わせられるようになります。
パイプで何が便利になるのか
- まず一覧を出す
- その中から必要なものだけ取り出す
- さらに別のコマンドへ渡して処理する
この流れが見えてくると、ターミナル全体が少しずつつながって見えてきます。今回の記事は、その入り口です。
💡 ヒント:パイプは「保存する」のではなく「渡す」ものです。ファイルに残したいならリダイレクト、次のコマンドに続けたいならパイプ、と考えると整理しやすくなります。
まず覚えたい基本例
最初は短い例で十分です。次の3つを見比べるだけでも、記号の役割はかなり整理できます。
一覧を保存する
$ ls > files.txtファイル一覧を画面に出す代わりに、files.txt へ保存します。結果をあとで読みたいときに便利です。
メモを足していく
$ echo "start" > work.txt
$ echo "checked files" >> work.txt1行目でファイルを作り、2行目で内容を追加しています。> と >> の違いを体感しやすい例です。
結果を絞り込む
$ history | grep git履歴全体を眺める代わりに、git を含む行だけを取り出します。長い一覧から必要な部分だけ見たいときに便利です。
探す、読む、整理する流れでつながってくる
リダイレクトとパイプは単独で便利なだけでなく、これまで学んできたコマンド同士をつなげる入口になります。たとえば、一覧を見る、必要なものだけ探す、結果をメモとして残す、という流れを考えてみましょう。
# Step 1: 履歴の中から vi を含む行だけ取り出す
$ history | grep vi
# Step 2: 今いる場所をメモへ残す
$ pwd >> work-log.txt
# Step 3: ファイル一覧を別ファイルへ保存する
$ ls > files.txt✔ 流れの中での活かし方
- 見る:まず一覧を出して全体を確認します。
- 絞る:
|で必要な行だけ取り出します。 - 残す:
>や>>で結果をファイルへ送ります。
こうして見ると、リダイレクトとパイプは特別な記号ではなく、作業の流れをつくるための基本だと分かります。コマンドを1個ずつ覚えるだけでは見えにくかった「つなげる使い方」が、ここから少しずつ見えてきます。
実際に試してみよう
読むだけでなく、実際に手を動かすと感覚がつかめます。次の手順で短く試してみてください。
pwdを実行して、今いる場所を確認します。pwd > here.txtを実行して、結果がファイルへ入ることを確かめます。date >> here.txtを実行して、追記されることを確かめます。history | grep pwdを実行して、履歴からpwdを含む行だけ取り出します。cat here.txtで、保存された内容を読み返します。
1〜2分で終わる簡単な手順ですが、画面へ出す、ファイルへ送る、次へ渡す、の違いが手で分かるようになります。
初心者は、まず3つだけ区別できれば十分
最初から複雑な組み合わせを覚える必要はありません。まずは次の3つを区別できれば十分です。
✔ 最初に意識する3つのこと
>は上書きする — 新しく結果を書き出します。>>は追記する — 今ある内容の後ろへ足します。|は次へ渡す — ファイルではなく次のコマンドへ流します。
この3つを意識するだけで、「記号が並んでいて難しそう」という感覚はかなり薄れます。大切なのは暗記よりも、結果の行き先を落ち着いて見分けることです。
まとめ
| 記号 | 役割 |
|---|---|
| > | 結果をファイルへ書き出す |
| >> | 結果をファイルへ追記する |
| | | 結果を次のコマンドへ渡す |
リダイレクトは、画面に出るはずの結果を別の場所へ送るための基本です。パイプは、その結果を次のコマンドへつなげるための基本です。どちらも、ターミナルらしい使い方へ進む最初の一歩になります。
まずは短い例で試しながら、画面へ出す、ファイルへ送る、次へ渡す、という違いを手で覚えていきましょう。それだけでも、コマンドの見え方はかなり変わってきます。
次回予告
次回は xargs を取り上げます。今回学んだ「つなぐ考え方」をもう一歩進めて、複数の結果を次のコマンドへ渡す流れを整理していきます。








