白鳥です。 実際に、a、bのファイルを作成して試してみました。 $ grep test * > c $ grep test * > c a、bの二つだけだとcには a、bの結果のみ出力されてcの結果はありませんでした。これは二番目のgrepを 起動したときにcのサイズが0となるためですね。grep test cの処理は行なわれる がサイズ0のため、結果もなしと。 > また、grepの出力はバッファリングされず、grep が出力したものはすぐにcに > 出力されるものとします。 ← ここが肝です。 もしa、bにtestと記述されている行がgrepのバッファ以上に大きければ、 1) cにa、bの結果がバッファを溢れて反映 ↓ 2) grep test で cが検索対象となる(cには、すでにバッファ以上の内容が入っている) ↓ 3) cにc自身の結果が追記 ↓ 4) cに追記された内容がさらにgrepが検索、バッファを溢れcに追記 ↓ 以後3)と4)の繰り返しで処理が終わらない といったことになるのですね。なるほど。自分としては、grepが一時的にどこかの ファイルに処理を溜めておいて、最後に出力されるものだと思っていました。 実際にはバッファ以上の処理があった場合は、ただちにファイルに書き込まれて しまうのですか。たしかに肝ですね。まさか、バッファを溢れた場合とそうでない 場合で結果が違うとは、考えてもいませんでした。 大変、勉強になりました。どうもありがとうございました。