ack コマンドは、ソースコード検索に特化した高速なテキスト検索ツールです。grep の代替として設計され、デフォルトで不要なファイルやディレクトリ(例: .git/, node_modules/)を無視し、プログラミング言語ごとに便利なフィルタを備えています。
構文(Syntax)
ack [オプション] <パターン> [パス...]
主なオプション一覧
| オプション | 説明 | 使用例 |
|---|---|---|
<パターン> | 正規表現で検索 | ack TODO |
<パス> | 特定のファイルやディレクトリを対象に検索 | ack error ./logs |
-i | 大文字小文字を無視 | ack -i error |
-w | 単語単位で検索 | ack -w main |
-l | マッチしたファイル名のみ表示 | ack -l FIXME |
-c | ファイルごとのマッチ数を表示 | ack -c TODO |
--count | 全体のマッチ数を表示 | ack --count TODO |
--ignore-dir=DIR | 指定ディレクトリを無視 | ack --ignore-dir=vendor |
--type=LANG | 特定言語のファイルに限定して検索 | ack --type=perl myfunc |
--help-types | 利用可能な言語タイプ一覧を表示 | ack --help-types |
実行例
“TODO” を含む行を検索
ack TODO
出力例:
src/main.py
12: # TODO: implement login
大文字小文字を無視して検索
ack -i error ./logs
ファイル名だけを表示
ack -l FIXME
出力例:
src/lib.rs
src/utils.rs
マッチ数をカウント
ack -c TODO
出力例:
src/main.py:2
src/utils.py:1
Perl ファイルだけを対象に検索
ack --type=perl subroutine
検索対象の言語一覧を確認
ack --help-types
出力例(一部):
--[no]perl Perl source
--[no]python Python source
--[no]ruby Ruby source
特定ディレクトリを無視
ack --ignore-dir=vendor password
エラー例(パターン未指定)
ack
出力例:
Usage: ack [OPTION...] PATTERN [FILES OR DIRECTORIES...]
関連コマンド
grep: 標準的なテキスト検索コマンド。ripgrep (rg): Rust 製でより高速な検索ツール。ag (The Silver Searcher):ackに似た高速検索ツール。
備考
ackは Perl で実装されており、正規表現検索に強い。.ackrcファイルを使うことでデフォルト設定をカスタマイズ可能。grepより開発用途に特化しており、不要なファイルを自動的に除外してくれるのが大きな特徴。
参考
- 公式サイト: https://beyondgrep.com/
- manページ: https://beyondgrep.com/documentation/

コメント