「コマンドの結果をファイルに保存したい」「複数のコマンドをつなげて一気に処理したい」
そんなときに使うのがパイプ(|)とリダイレクト(> >>)です。この2つを使いこなせると、Linuxの作業効率が一気に上がります。前回の「ファイルの中身を見る・検索する方法」と合わせて覚えましょう。
パイプとリダイレクトの違い
まず2つの違いを図で整理します。どちらも「コマンドの出力を別の場所へ渡す」仕組みですが、渡す先が違います。
- パイプ(|):出力を次のコマンドの入力として渡す(コマンド → コマンド)
- リダイレクト(>):出力をファイルに書き込む(コマンド → ファイル)
パイプ(|)の使い方
パイプは | という記号で、左のコマンドの出力を右のコマンドの入力として渡します。何個でもつなげることができます。
# 基本形:コマンドA | コマンドB
$ cat /etc/passwd | grep "user"
# 3つつなげる
$ cat /var/log/syslog | grep "error" | tail -20
# プロセスを検索
$ ps aux | grep nginx
# ファイル数をカウント
$ ls | wc -l
よく組み合わせるコマンド
wc -l:行数をカウント(wc = Word Count コマンド、-lはline(行)オプション)sort:並び替えuniq:重複行を除去head / tail:先頭・末尾N行を抽出grep:特定文字列を含む行を抽出
リダイレクト(> >>)の使い方
リダイレクトは、コマンドの出力をファイルに書き込む仕組みです。記号によって動作が変わります。
# > 上書き保存(既存内容は消える)
$ ls -la > filelist.txt
# >> 追記(既存内容の末尾に追加)
$ echo "新しいログ" >> app.log
# 2> エラー出力をファイルへ
$ cat 存在しないファイル.txt 2> error.log
# 標準出力とエラー出力を同じファイルへ
$ ./script.sh > output.log 2>&1
# /dev/null にリダイレクト(出力を捨てる)
$ apt update > /dev/null 2>&1
/dev/null って何?
/dev/null はLinux特有の「出力を捨てる場所」です。画面にもファイルにも表示したくないときに使います。自動実行スクリプトで余分な出力を抑えるときに活躍します。
パイプとリダイレクトを組み合わせる
パイプとリダイレクトは同時に使えます。「複数コマンドで処理した結果をファイルに保存する」という実践的なパターンを見てみましょう。
# エラーログを抽出してファイルに保存
$ cat /var/log/syslog | grep "error" > errors.txt
# 今日のエラーだけを追記
$ grep "Mar 14" /var/log/syslog | grep "error" >> today_errors.txt
# nginxプロセス数を確認してファイルに記録
$ ps aux | grep nginx | wc -l > nginx_count.txt
# ディレクトリ内のファイルをサイズ順に並べて保存
$ ls -la | sort -k5 -n > sorted_files.txt
tee コマンド:画面とファイルに同時出力
tee コマンドを使うと、画面への表示とファイルへの保存を同時に行えます。ログを確認しながら保存したいときに便利です。
# 画面に表示しながらファイルにも保存
$ cat /var/log/syslog | grep "error" | tee errors.txt
# 追記モードで保存
$ ./script.sh | tee -a script.log
パイプとリダイレクトの違い
| 種類 | 記号 | 意味 | 例 |
|---|---|---|---|
| パイプ | | | コマンドの出力を次のコマンドに渡す | cat file | grep “error” |
| 出力リダイレクト(上書き) | > | 出力をファイルに書き込む(上書き) | ls > list.txt |
| 出力リダイレクト(追記) | >> | 出力をファイルに追記する | echo “msg” >> log.txt |
| 入力リダイレクト | < | ファイルの内容を入力として使う | sort < data.txt |
| 標準エラーをリダイレクト | 2> | エラー出力をファイルに書き込む | cmd 2> error.log |
| 標準出力+エラーをリダイレクト | > 2>&1 | 両方をファイルに書き込む | cmd > all.log 2>&1 |
パイプの実践組み合わせ例
| 目的 | コマンド例 |
|---|---|
| エラーログの件数を数える | grep “ERROR” /var/log/syslog | wc -l |
| プロセスを絞り込む | ps aux | grep nginx |
| ファイル一覧を並べ替え | ls -la | sort -k5 -n |
| 重複を除いてカウント | cat log | sort | uniq -c | sort -rn |
まとめ:この記事で学んだこと
- パイプ(|):コマンドの出力を次のコマンドへ渡す。何個でもつなげられる
- リダイレクト(>):出力をファイルへ上書き保存
- 追記(>>):出力をファイルへ追記。ログ蓄積に使う
- エラーリダイレクト(2>):エラー出力だけをファイルへ
- 2>&1:標準出力とエラーを同じファイルへまとめる
- tee:画面表示とファイル保存を同時に行う
関連記事
📋 Linux入門チートシート完全版で全コマンドを一気に復習できます。



コメント