風柳メモ

ソフトウェア・プログラミング関連の覚書が中心

Unixのリダイレクトの覚書

リダイレクションに関して、これまで見た中でもっとも理解しやすかった記事。

UNIXの部屋 コマンド検索:リダイレクト (*BSD/Linux)

command > /dev/null 2>&1 の解釈

$ command >/dev/null 2>&1
  • 「>dev/null」は「1>/dev/null」に同じで、「標準出力(1)の出力先を /dev/null に設定」の意味
  • 「2>&1」は「標準エラー出力(2)の出力先を、標準出力(1)の出力先と同じものに設定」の意味

左から順に処理され、出力先が次のように変わるものと解釈する。

デフォルト >/dev/null 2>&1
標準出力(1) 画面 /dev/null /dev/null
標準エラー出力(2) 画面 画面 /dev/null

結果として、標準出力も標準エラー出力も、/dev/null にリダイレクトされ、表示されなくなる。

ちなみに

$ command >file 2>&1

と、

$ command >file 2>file

とでは意味が(結果が)異なるので注意(というか後者はやってはいけないこと、かも)。
後者は標準出力・標準エラー出力共に、同一ファイルを上書きモードで開くため file の内容がおかしくなる。