Bashパイプとリダイレクト - |、>、>>、2>、<、<<
bashパイプでコマンドを連鎖させ、リダイレクトで入出力を制御する方法を学びます。stdout、stderr、ヒアドキュメント、プロセス置換をカバーします。
Pipes & Redirects
詳細な説明
Bashでのパイプとリダイレクト
パイプとリダイレクトはUnixシェルを強力にするメカニズムです。コマンドを接続し、入力元と出力先を制御できます。
パイプ(|)
パイプはあるコマンドの標準出力(stdout)を次のコマンドの標準入力(stdin)に接続します:
ls -la | grep ".log"
cat server.log | grep "ERROR" | wc -l
ps aux | sort -k3 -rn | head -5
出力リダイレクト(>と>>)
>演算子はstdoutをファイルにリダイレクトし、内容を上書きします。>>は追記します:
echo "Hello" > greeting.txt # 上書き
echo "World" >> greeting.txt # 追記
エラーリダイレクト(2>)
ファイルディスクリプタ2は標準エラー(stderr)を表します:
command 2> errors.log # stderrをファイルにリダイレクト
command 2>/dev/null # stderrを破棄
command > output.log 2>&1 # stdoutとstderrの両方をリダイレクト
command &> combined.log # 両方の省略記法(bash 4+)
ヒアドキュメント(<<)
ヒアドキュメントはインラインの複数行入力を提供します:
cat << 'EOF'
これは複数行の
テキストブロックで、
フォーマットとインデントを保持します。
EOF
プロセス置換(<())
プロセス置換はコマンドの出力をファイルとして扱います:
diff <(sort file1.txt) <(sort file2.txt)
tee - 出力の分割
teeコマンドはstdoutとファイルの両方に同時に書き込みます:
command | tee output.log # 表示して保存
command | tee -a output.log # 表示して追記
ユースケース
パイプとリダイレクトはシェルスクリプティングと日常のコマンドライン作業の基本です。システム管理者はログファイルのフィルタリングと分析に、開発者はビルドパイプラインとデータ処理スクリプトに、DevOpsエンジニアはデプロイの自動化に使用します。