回答:
grep自体ではありませんが、ファイルシステム自体は最近読み取ったデータをキャッシュすることが多く、grepはディスクではなくメモリを効率的に検索するため、後の実行が高速になります。
Linuxおよび* NIXシステムは、ファイルシステム(VFSで抽象化)とユーザーレベルプロセスの間にあるさまざまなキャッシュを使用します。したがって、grepではなく、キャッシュを実行するファイルシステムではなく、オペレーティングシステムです。
grepのパフォーマンスを担当するキャッシュはVFSバッファーキャッシュです。他のキャッシュはiノードとディレクトリ用ですが、ここでは使用しません。
詳細については、Linux Documentation Project:9.2 The Virtual File System http://tldp.org/LDP/tlk/fs/filesystem.htmlを参照してください。
/usr/include
、すべてのキャッシュがドロップされた状態で、システム上でgrep が16.4秒かかりました。すべてをキャッシュして、約0.3秒。ページキャッシュ(バッファキャッシュを保持している)のみをドロップすると、約14.3秒かかります。ページキャッシュを離れてdentry / inodeキャッシュをドロップすると、約12秒かかります。