はじめに
ここまでは「ファイルを見る」「権限を変える」など、コマンドを1つずつ単独で使ってきました。Linuxの本当の強さは、コマンド同士をつなぐことで発揮されます。
あるコマンドの結果を別のコマンドへ渡したり、画面に出る結果をファイルへ保存したりすることで、小さなコマンドを組み合わせて強力な処理を作れるようになります。
この回では、リダイレクト(>、>>)、パイプ(|)、文字列検索を行う grep、ファイル検索を行う find、件数を数える wc を学びます。
1. リダイレクト:出力先をファイルに切り替える
コマンドの実行結果は通常、画面に表示されます。この出力先をファイルへ変更する仕組みがリダイレクトです。
>:ファイルへ上書きする
> は出力結果をファイルへ保存します。
すでに同名ファイルが存在する場合は、中身を消して上書きします。
$ echo "1行目です" > log.txt
$ cat log.txt
期待される出力(例):
1行目です
再度 > を使うと上書きされます。
$ echo "あとから書いた行" > log.txt
$ cat log.txt
期待される出力(例):
あとから書いた行
最初の内容は消えています。
>>:ファイルへ追記する
>> は既存内容を残したまま末尾へ追加します。
$ echo "1行目です" > log.txt
$ echo "2行目を追記" >> log.txt
$ echo "3行目も追記" >> log.txt
$ cat log.txt
期待される出力(例):
1行目です
2行目を追記
3行目も追記
| 記号 | 動作 | 既存データ |
|---|---|---|
> | 上書き | 消える |
>> | 追記 | 残る |
注意:
>は確認なしで上書きします。追記したい場合は必ず>>を使用しましょう。
2. パイプ |:コマンドをつなぐ
パイプ(|)は、左側コマンドの出力を右側コマンドの入力として渡す仕組みです。
左のコマンド | 右のコマンド
例えば、ls -l の結果を less に渡して読みやすくできます。
$ ls -l | less
ls -l の結果が less に渡され、ページ単位で閲覧できます。
パイプは複数連結することも可能です。

3. grep:文字列検索
grep は指定した文字列を含む行だけを抽出するコマンドです。
例として次のログファイルがあるとします。
2026-05-29 10:00:01 INFO GET /index.html 200
2026-05-29 10:00:05 INFO GET /about.html 200
2026-05-29 10:01:12 ERROR GET /missing.html 404
2026-05-29 10:02:30 INFO POST /login 200
2026-05-29 10:03:44 error GET /old.html 404
基本検索
$ grep "ERROR" access.log
期待される出力(例):
2026-05-29 10:01:12 ERROR GET /missing.html 404
-i:大文字小文字を無視する
$ grep -i "error" access.log
期待される出力(例):
2026-05-29 10:01:12 ERROR GET /missing.html 404
2026-05-29 10:03:44 error GET /old.html 404
-n:行番号を表示する
$ grep -n "INFO" access.log
期待される出力(例):
1:2026-05-29 10:00:01 INFO GET /index.html 200
2:2026-05-29 10:00:05 INFO GET /about.html 200
4:2026-05-29 10:02:30 INFO POST /login 200
-r:ディレクトリ全体を検索する
$ grep -rn "TODO" .
期待される出力(例):
./notes/memo.txt:3:TODO 設定を見直す
./src/main.txt:10:TODO エラー処理を追加
| オプション | 意味 |
|---|---|
-i | 大文字小文字を区別しない |
-n | 行番号表示 |
-r | 再帰検索 |

4. find:ファイルを探す
find は条件に一致するファイルやディレクトリを検索します。
-name:名前で検索する
$ find . -name "*.txt"
期待される出力(例):
./memo.txt
./notes/todo.txt
./notes/archive/old.txt
-type f:ファイルだけに限定する
$ find . -type f -name "*.txt"
期待される出力(例):
./memo.txt
./notes/todo.txt
./notes/archive/old.txt
| 条件 | 意味 |
|---|---|
-name "*.txt" | .txtファイルを検索 |
-type f | ファイルのみ対象 |
5. wc:件数や行数を数える
wc は行数や単語数を数えるコマンドです。
-l:行数を数える
$ wc -l access.log
期待される出力(例):
5 access.log
grep と組み合わせる
ERROR行の件数を数えます。
$ grep "ERROR" access.log | wc -l
期待される出力(例):
1
grep -c:件数だけを表示する
$ grep -c "ERROR" access.log
期待される出力(例):
1
| コマンド | 結果 |
|---|---|
grep "ERROR" access.log | 該当行を表示 |
grep "ERROR" access.log | wc -l | 件数を表示 |
grep -c "ERROR" access.log | 件数を表示 |
演習
課題:ERRORログを検索して件数を数える
ログファイルを作成します。
$ cd ~
$ echo "2026-05-29 10:00:01 INFO GET /index.html 200" > access.log
$ echo "2026-05-29 10:00:05 INFO GET /about.html 200" >> access.log
$ echo "2026-05-29 10:01:12 ERROR GET /missing.html 404" >> access.log
$ echo "2026-05-29 10:02:30 INFO POST /login 200" >> access.log
$ echo "2026-05-29 10:03:44 ERROR GET /old.html 500" >> access.log
$ echo "2026-05-29 10:04:10 ERROR POST /pay 500" >> access.log
内容を確認します。
$ cat access.log
行数を確認します。
$ wc -l access.log
期待される出力(例):
6 access.log
ERROR行だけ抽出します。
$ grep "ERROR" access.log
期待される出力(例):
2026-05-29 10:01:12 ERROR GET /missing.html 404
2026-05-29 10:03:44 ERROR GET /old.html 500
2026-05-29 10:04:10 ERROR POST /pay 500
件数を数えます。
$ grep "ERROR" access.log | wc -l
期待される出力(例):
3
$ grep -c "ERROR" access.log
期待される出力(例):
3
演習の確認ポイント
- ☐
>と>>を使い分けられる - ☐
|でコマンドを連結できる - ☐
grepで目的の行を検索できる - ☐
wc -lとgrep -cで件数を確認できる