[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-users:05919] Redirection ( was Re: 解像度の設定について )



正確さのために、一応つっこみをいれます。御容赦を。

In <199805142207.HAA23965@xxxxxxxxxxxxxxxxxxxxxxxx>
[debian-users:05895] Re: 解像度の設定について, May.15 '98 07:07 JST
g96p0935@xxxxxxxxxxxxxxxx says:
=   標準出力と標準エラー出力ともにリダイレクトするには、>のかわりに、
=   2> (sh,bash) , >& (csh,tcsh) を使います。パイプの使い方も覚えましょう。

    bash$ a_command 2> hoge

は、``a_command'' のfile descriptor `2' をファイル ``hoge'' へと
むけます。`2'は典型的にはstderr, 「標準エラー出力」です。

    tcsh> a_command >& hoge

は、``a_command'' の「標準出力」と「標準エラー出力」の*両方*を
ファイル ``hoge'' へとむけます。

つまり、bsh系の ``2>'' と csh系の``>&'' は意味が異なります。
``>&'' に相当することをbsh系でする場合、

    bash$ a_command > hoge 2>&1

となります。


以下はついでということで。

標準出力と、標準エラー出力とを、それぞれ別のファイルに落したい場合:

    bash$ a_command > hoge 2> fuga

cshのマニュアルには次のような事が書いてあります。

    csh% ( a_command > hoge ) >& fuga

このあたりから段々頭痛がしてくるのですが、どうせプロセスを余計に
ひとつ起こすなら、

    csh% sh -c 'a_command >hoge 2> fuga'

とでも書いた方がまだましです。ファイルではなくpipeを使う事を
考えて見ると良くわかるでしょう。

標準出力はpipeで別プロセスに渡し、標準エラー出力はファイルに
落す場合:

    bash$ a_command 2> hoge | another_command

    tcsh> sh -c 'a_command 2> hoge' | another_command

となります。「あほらしい」と思う人もいるかもしれません。
私はもともとはtcshユーザで、よくこういう使い方をしていました。

#実はいまだにbashにはなじめません。せめてもうすこしbug freeだと
 うれしい。


 -.- . -. -.
Ken Nakagaki <kenn@xxxxxxxxxxxxxxxxx>
「人は船ではない。人は会社ではない」-- Gerry Spence