「コマンドの結果をファイルに保存したい」「複数のコマンドをつなげて一気に処理したい」
そんなときに使うのがパイプ(|)とリダイレクト(> >>)です。この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
まとめ:この記事で学んだこと
- パイプ(|):コマンドの出力を次のコマンドへ渡す。何個でもつなげられる
- リダイレクト(>):出力をファイルへ上書き保存
- 追記(>>):出力をファイルへ追記。ログ蓄積に使う
- エラーリダイレクト(2>):エラー出力だけをファイルへ
- 2>&1:標準出力とエラーを同じファイルへまとめる
- tee:画面表示とファイル保存を同時に行う
関連記事
📋 Linux入門チートシート完全版で全コマンドを一気に復習できます。



コメント