home ホーム search 検索 -  login ログイン  | reload edit datainfo version cmd icon diff delete  | help ヘルプ

技術/shell/標準エラー出力のパイプとリダイレクト(2) (v1)

技術/shell/標準エラー出力のパイプとリダイレクト(2) (v1)

技術 / shell / 標準エラー出力のパイプとリダイレクト(2) (v1)
id: 278 所有者: msakamoto-sf    作成日: 2007-04-10 04:37:45
カテゴリ: UNIX シェルスクリプト 

例えば、

bash: $ command1 >file 2>&1

だと、STDERRもSTDOUTもファイルにリダイレクトされる。
が、

bash: $ command1 2>&1 >file

だと、STDERRが画面に出力されてしまう。

http://x68000.q-e-d.net/~68user/unix/pickup?%A5%EA%A5%C0%A5%A4%A5%EC%A5%AF%A5%C8

にあるが、bashにおける"N>M"の機能は、内部的にはdup(M, N)(dup2?)をコールしている。
dup(M, N)の意は、MのファイルディスクリプタをNにコピーする。

すなわち、"N>M"の意は、Mの出力先ディスクリプタをNにコピーする。つまり、

bash: $ comman1 2>&1 >file

の意は・・・
1.2(STDERR)の出力先を、1(STDOUT)と同じくする。(=画面)
2.1(STDOUT)の出力先を、fileにする。
ということになる。よって、STDERRだけが画面に出力されるわけ。

逆に言えば、STDERRだけをlessりたい場合などは上記でオッケー。

リダイレクトはcshか、bashかによっても書き方が分かれるので忘れやすいところ。
見た目にもだまされやすい。
上記リンクを書きたかっただけじゃないかと言われればその通りだが、実際、忘れたときには上記リンク参照のこと。



プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2009-04-04 09:12:53
md5:cc52d9e8152f99b8c555eb793d991dcd
sha1:af4cd1769a9c4a8105cd7e439336400471a2dbd3
コメント
コメントを投稿するにはログインして下さい。