ag (The Silver Searcher) – 高速なコード検索コマンド

コマンドリファレンス

ag コマンド(The Silver Searcher)は、ソースコード検索に特化した非常に高速なテキスト検索ツールです。
ack を参考に開発され、デフォルトで .gitignore などを考慮し、不要なファイルを除外して効率的に検索できます。

agコマンドのインストール方法

ag は標準では入っていないため、パッケージマネージャーで個別にインストールします。

環境インストールコマンド
macOS(Homebrew)brew install the_silver_searcher
Ubuntu / Debiansudo apt install silversearcher-ag
CentOS / RHEL / Fedorasudo dnf install the_silver_searcher
Windows(WSL)WSL内のUbuntuで sudo apt install silversearcher-ag
Windows(Scoop)scoop install ag

インストール後は ag --version でバージョンを確認できます。

ag --version

構文(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・ripgrep・ackとの違い(比較表)

ag はどの立ち位置のツールなのか、代表的な検索コマンドと比較します。

ツール実装言語速度.gitignore対応現状の立ち位置
grepC(標準コマンド)標準非対応環境を問わず必ず使える最終手段
ackPerlやや速い対応ag の設計に影響を与えたが近年は利用減
ag(The Silver Searcher)C高速対応軽量・シンプルで根強い人気。ただしメンテナンスは緩やか
ripgrep(rg)Rust最速クラス対応活発に開発中で現在の主流。VS Codeなどにも採用

迷ったら ripgrep(rg) を使うのが現在は無難です。ag はインストールサイズが小さく依存関係もシンプルなため、軽量な環境や既存のスクリプトで ag 前提の運用がある場合に選ぶ価値があります。標準コマンドだけで完結させたい場合は grep の正規表現・除外オプションだけでも十分なケースが多いです。

よくある質問(FAQ)

Q1. agコマンドのインストール方法は?

macOSは brew install the_silver_searcher、Ubuntu/Debianは sudo apt install silversearcher-ag でインストールできます。詳しくは記事冒頭の「agコマンドのインストール方法」を参照してください。

Q2. agとripgrep(rg)はどちらを使うべき?

速度・開発の活発さでは ripgrep(rg) が優位です。新規に導入するなら ripgrep を推奨しますが、既存環境で ag が使われている場合や、依存関係を増やしたくない場合は ag のままで問題ありません。

Q3. agとgrepの違いは?

ag はデフォルトで .gitignore を尊重し、バイナリファイルや node_modules などを自動的に除外するため、コード検索では体感速度・ノイズの少なさともに grep より扱いやすいです。ただし ag は追加インストールが必要なのに対し、grep はどの環境にも標準搭載されている点が異なります。

Q4. ag コマンドが見つからない(command not found)場合は?

ag は標準ではインストールされていないため、パッケージ名が異なる点に注意してください。Ubuntu/Debian系ではコマンド名は ag でもパッケージ名は silversearcher-ag です。sudo apt install silversearcher-ag のように、パッケージ名とコマンド名の違いを意識してインストールしてください。

まとめ

ag(The Silver Searcher)は、.gitignore を自動的に考慮しながら高速にソースコードを検索できるコマンドです。パッケージマネージャーで簡単に導入でき、-i(大文字小文字無視)・-w(単語単位)・--ignore(除外指定)などのオプションを組み合わせることで、目的のコードやTODOコメントを素早く見つけられます。より高速な検索ツールを求める場合は ripgrep(rg)、標準コマンドだけで完結させたい場合は grep も合わせて検討してください。

関連コマンド

  • grep : 標準的なテキスト検索コマンド。正規表現や除外オプションの詳細はこちら。
  • ack : ag の設計に影響を与えた検索ツール。
  • ripgrep(rg) : ag よりさらに高速で現在主流の検索ツール。インストール〜実務オプションまで解説。

備考

  • ag は C で実装されており、速度が非常に速いのが特徴です。
  • デフォルトで .gitignore.hgignore.agignore を尊重します。
  • 近年では ripgrep (rg) のほうが推奨されるケースが多いですが、ag は軽量でシンプルなため依然として利用されています。

参考

Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする

コメント