Linux入門

パイプとリダイレクトでコマンドを組み合わせる

Linux入門
記事内に広告が含まれています。

「コマンドの結果をファイルに保存したい」「複数のコマンドをつなげて一気に処理したい」

そんなときに使うのがパイプ(|)リダイレクト(> >>)です。この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:画面表示とファイル保存を同時に行う

関連記事

シェルスクリプト入門【変数・条件分岐・ループ】

cronで定期実行を自動化する

📋 Linux入門チートシート完全版で全コマンドを一気に復習できます。

コメント

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