リダイレクションに関して、これまで見た中でもっとも理解しやすかった記事。
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 の内容がおかしくなる。