シェルで出力をリダイレクトするときに間違えそうなこと
$ ls ngrep* ngrep $ $ ls ngrep > ls.log 2>&1 $ $ cat ls.log ngrep $ rm ls.log $ $ ls ngrepp > ls.log 2>&1 $ $ cat ls.log ngrepp: ファイルもディレクトリもありません。 $ rm ls.log $ $ ls ngrepp 2>&1 > ls.log ngrepp: ファイルもディレクトリもありません。 $ $ cat ls.log $ rm ls.log $
標準出力と標準エラー出力を同じファイルにリダイレクトするとき、「2>&1」の後に「> ファイル名」と書いてしまいそうだが、「> ファイル名」、「2>&1」の順が正しい。
前者だと、標準エラー出力の出力先を標準入力の出力先、多くの場合はコンソールにして、それから標準出力の出力先をファイルに変えることになる。つまり、標準エラー出力はコンソールに行ってしまいファイルに行かない。
後者なら、標準出力の出力先をファイルにして、標準エラー出力の出力先を標準出力の出力先に変える。つまり標準出力・標準エラー出力ともにファイルに行く。
直感的に「2つの出力をまとめて、ファイルに向ける」みたいな感じで前者のように書いてしまいそうだが、実は間違っているので注意。
« selector属性(cookie/header/name/parameter)が指定されていません | Main | こんにゃくゼリーは悪くないと思うよ »
「プログラミング、技術情報」カテゴリの記事
- PHPStorm 2018.1.7 に更新(2018.12.09)
- 技術メモをQiitaに移行(2016.01.24)
- 正規表現メモ:ものぐさ(最小)マッチング(2015.11.29)
- BASE64にエンコード/デコードするバッチファイル(2015.11.23)
- Windows7の検索ボックスの検索条件指定(フォルダの除外など)(2015.08.16)
The comments to this entry are closed.
« selector属性(cookie/header/name/parameter)が指定されていません | Main | こんにゃくゼリーは悪くないと思うよ »
Comments