WindowsバッチとLinuxシェルにおけるリダイレクト構文の違いまとめ

WindowsとLinuxのリダイレクト構文まとめ

作成日: 2025年7月15日

WindowsのバッチファイルとLinuxのシェルスクリプトでは、リダイレクト構文が異なります。
本記事では、標準出力(stdout)と標準エラー出力(stderr)の制御方法を比較形式で解説します。

基本の考え方:stdout / stderr

名前略称ファイル記述子役割
標準出力stdout1正常系の出力
標準エラー出力stderr2異常系の出力

Windowsバッチ(cmd.exe)でのリダイレクト

command > out.txt            :: stdout をファイルへ
command 2> err.txt          :: stderr をファイルへ
command > out.txt 2> err.txt:: 両方を別ファイルへ
command >nul 2>nul          :: 両方を破棄
command >nul 2>&1           :: stderr を stdout に結合し捨てる

Linuxシェル(bash)でのリダイレクト

command > out.txt           # stdout をファイルへ
command 2> err.txt         # stderr をファイルへ
command > out.txt 2> err.txt# 両方を別ファイルへ
command &> out.txt         # 両方を同じファイルへ(bash専用)
command >/dev/null 2>&1    # 両方を破棄

比較表

操作内容Windows(cmd)Linux(bash)
stdout をファイルへ> out.txt> out.txt
stderr をファイルへ2> err.txt2> err.txt
両方を別ファイルへ> out.txt 2> err.txt> out.txt 2> err.txt
両方を同じファイルへ> all.txt 2>&1&> all.txt
両方を破棄>nul 2>nul>/dev/null 2>&1

まとめ

参考リンク:
Microsoft Docs - リダイレクト演算子
GNU Bash Manual - Redirections
TECH BLOG BY OZAKI