標準出力のリダイレクト(> / >>)
標準出力のみをファイルに書き込みます。エラーはそのまま表示されます。
# 標準出力はファイルへ、エラーは画面へ
{
echo 'これは標準出力です'
echo 'これは標準エラー出力です' >&2
} > sample.log
# ファイルの中身を確認
cat sample.log
標準入力のリダイレクト(<)
ファイルの内容をコマンドの入力として渡します。
echo 'apple' > list.txt
echo 'banana' >> list.txt
# tr コマンドで小文字を大文字に変換
tr 'a-z' 'A-Z' < list.txt
標準エラー出力のリダイレクト(2>)
標準エラー出力のみをファイルに書き込みます。正常な出力はそのまま表示されます。
# エラーだけをファイルに記録
{
echo 'これは標準出力です'
echo 'これは標準エラー出力です' >&2
} 2> sample.log
# ファイルの中身を確認
cat sample.log
標準出力とエラーをまとめてリダイレクト(&>)
標準出力とエラーの両方を1つのファイルにまとめます。
# すべてファイルに記録
{
echo 'これは標準出力です'
echo 'これは標準エラー出力です' >&2
} &> sample.log
# ファイルの中身を確認
cat sample.log
出力を捨てる(> /dev/null)
不要な出力を表示したくない場合に使います。
echo '消したいメッセージ' > /dev/null 2>&1
# Bash の短縮記法
echo '消したいメッセージ' &> /dev/null
パイプ(|)
前のコマンドの出力を次のコマンドの入力として渡します。
echo -e 'banana\napple\ncherry' | grep 'a' | sort
標準エラー出力をパイプに渡す(|&)
通常のパイプ「|」は標準出力のみを渡しますが、「|&」は標準エラー出力も次のコマンドに渡します。
# 通常のパイプ
{
echo 'これは標準出力です'
echo 'これは標準エラー出力です' >&2
} | wc -l
# |& を使ったパイプ
{
echo 'これは標準出力です'
echo 'これは標準エラー出力です' >&2
} |& wc -l