ag コマンド(The Silver Searcher)は、ソースコード検索に特化した非常に高速なテキスト検索ツールです。ack を参考に開発され、デフォルトで .gitignore などを考慮し、不要なファイルを除外して効率的に検索できます。
構文(Syntax)
ag [オプション] <パターン> [パス...]
主なオプション一覧
| オプション | 説明 | 使用例 |
|---|---|---|
<パターン> | 正規表現で検索 | ag TODO |
<パス> | 検索対象ディレクトリやファイルを指定 | ag error ./logs |
-i | 大文字小文字を無視 | ag -i error |
-w | 単語単位で検索 | ag -w main |
-l | マッチしたファイル名のみ表示 | ag -l FIXME |
-c | ファイルごとのマッチ数を表示 | ag -c TODO |
--stats | 検索の統計情報を表示 | ag --stats foo |
--hidden | 隠しファイル・ディレクトリも対象にする | ag --hidden secret |
--ignore DIR/PATTERN | 特定のディレクトリやパターンを無視 | ag --ignore node_modules |
--depth N | ディレクトリ探索の深さを制限 | ag --depth 2 TODO |
--follow | シンボリックリンクをたどる | ag --follow pattern |
実行例
“TODO” を含む行を検索
ag TODO
出力例:
src/main.py:12: # TODO: implement login
tests/test_app.py:5: # TODO: write unit tests
大文字小文字を無視して検索
ag -i error ./logs
ファイル名だけを表示
ag -l FIXME
出力例:
src/lib.rs
src/utils.rs
マッチ数を表示
ag -c def
出力例:
src/main.py:3
src/utils.py:1
隠しファイルも検索対象にする
ag --hidden password
特定のディレクトリを無視
ag --ignore node_modules foo
ディレクトリ深さを制限
ag --depth 1 TODO
検索統計を表示
ag --stats function
出力例:
matches found: 42
files searched: 10
time taken: 0.012s
エラー例(パターン未指定)
ag
出力例:
Usage: ag [FILE-TYPE] [OPTIONS] PATTERN [PATH]
関連コマンド
grep: 標準的なテキスト検索コマンド。ack:agの設計に影響を与えた検索ツール。ripgrep (rg):agよりさらに高速で現在主流の検索ツール。
備考
agは C で実装されており、速度が非常に速いのが特徴です。- デフォルトで
.gitignore、.hgignore、.agignoreを尊重します。 - 近年では
ripgrep (rg)のほうが推奨されるケースが多いですが、agは軽量でシンプルなため依然として利用されています。

コメント