LoginSignup
9
6

More than 5 years have passed since last update.

grepより高速に検索できるag(The Silver Searcher)のインストール方法

Last updated at Posted at 2016-03-09

agとは

aggrepのように、ファイルから文字列を検索するツールです。
grepよりも高速に動作するため、大きなプロジェクトやログファイルで検索をする場合にとても便利です。

grepに比べて何がいいか

  • 高速
  • gitignore にあるファイルを検索対象外にできる
  • 隠しファイルはデフォルトで検索対象外
  • grepの -ir オプション(大文字小文字無視でディレクトリを再帰的に検索)がデフォルト
  • コマンドも短く、結果が見やすい(後述)

grepと結果を比較

grepとagの実行結果を比べると、このようになります。
agのほうがコマンドがとても簡単で、結果も見やすいことがわかるかと思います。

$ grep -rn test *
a/a.txt:1:test1
a/a.txt:2:test2
b/b.txt:1:test1
b/b.txt:2:test2

$ ag test
a/a.txt
1:test1
2:test2

b/b.txt
1:test1
2:test2

インストール

インストール方法はGitHubInstalling という箇所にOS別で記載されています。
CentOSの場合は以下のようになります。

$ su - 
# git clone https://github.com/ggreer/the_silver_searcher.git
# cd the_silver_searcher
# yum -y groupinstall "Development Tools"
# yum -y install pcre-devel xz-devel
# ./build.sh
# make install

環境によっては、build.shにて以下のようなエラーが出ることがあります。

aclocal:configure.ac:71: warning: macro `AM_COND_IF' not found in library

その場合は、tarをダウンロードしてインストールする手順を実行しましょう。

# wget http://geoff.greer.fm/ag/releases/the_silver_searcher-0.31.0.tar.gz
# tar xvzf the_silver_searcher-0.31.0.tar.gz
# cd the_silver_searcher-0.31.0
# ./configure
# make
# make install

便利な使い方

特定のディレクトリを除外して検索

--ignore-dir オプションをつけることで、特定のディレクトリを除外することが可能です。
複数のディレクトリを除外したい場合は複数回入力します。

# 普通に検索
$ ag test
a/a.txt
1:test1
2:test2

b/b.txt
1:test1
2:test2

# bディレクトリを除外して検索
$ ag --ignore-dir b test
a/a.txt
1:test1
2:test2

正規表現で検索

agでもgrepと同様に正規表現を使うことができます。

$ ag "test\d*"
a/a.txt
1:test1
2:test2

b/b.txt
1:test1
2:test2

小文字だけを入力した場合は大文字小文字を無視し、大文字を入力した場合は厳密に検索

-S オプションを使うと、小文字だけを入力した場合は大文字小文字を無視し、大文字を入力した場合は厳密に検索するようになります。aliasに設定しておくのもおすすめです。

# 小文字の場合は大文字小文字を無視(つけても変わらない)
$ ag -S test
a/a.txt
1:test1
2:test2

b/b.txt
1:Test1
2:test2

# 大文字の場合は厳密に検索
$ ag -S  Test
b/b.txt
1:Test1
9
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
6