らくがきちょう

なんとなく ~所属組織/団体とは無関係であり、個人の見解です~

CentOS7/8 に ripgrep をインストールする

ripgrep (通称 rg) は Rust で作られたコマンドラインツールです。 grep を同じでファイツ中の文字列を検索出来ますが、非常に動作スピードが速いです。 grep再帰検索させる場合は find と組み合わせて利用するケースが多いと思いますが、ripgrep は単体で再帰検索可能です。

インストール

ソースコードからインストールすることも出来ますが、今回はリポジトリからインストールします。

CentOS7 (yum)

リポジトリを追加し、インストールします。

yum-config-manager --add-repo=https://copr.fedorainfracloud.org/coprs/carlwgeorge/ripgrep/repo/epel-7/carlwgeorge-ripgrep-epel-7.repo
yum -y install ripgrep

CentOS8 (dnf)

基本的には CentOS7 と同じですが、dnf を使います。 追加するリポジトリの URL は CentOS8 と同じです。

dnf config-manager --add-repo=https://copr.fedorainfracloud.org/coprs/carlwgeorge/ripgrep/repo/epel-7/carlwgeorge-ripgrep-epel-7.repo
dnf -y install ripgrep

設定ファイル

ripgrep は設定ファイルでオプションの無い場合の振る舞いを変更することが出来ます。 設定ファイルは決まっておらず、環境変数 RIPGREP_CONFIG_PATH でファイル名を指定する必要があります。

export RIPGREP_CONFIG_PATH="$HOME/.ripgreprc"

GitHub の該当部分 では設定ファイル例として以下が記載されていました。

$ cat $HOME/.ripgreprc
# Don't let ripgrep vomit really long lines to my terminal, and show a preview.
--max-columns=150
--max-columns-preview

# Add my 'web' type.
--type-add
web:*.{html,css,js}*

# Using glob patterns to include/exclude files or folders
--glob=!git/*

# or
--glob
!git/*

# Set the colors.
--colors=line:none
--colors=line:style:bold

# Because who cares about case!?
--smart-case

使い方

基本的な使い方をメモしておきます。

再帰的に検索を行う

ripgrep を実行するには rg コマンドを使います。 以下のように実行するとサブディレクトリを含む、現在ディレクトリ配下を検索します。 grep と異なり、デフォルトではバイナリファイルは避けて検索を行います。

rg [PATTERN]

指定ファイルを検索する

ファイルを検索する場合は検索したい文字列に続けて、ファイル名を指定します。

rg [PATTERN] [FILE]

指定ディレクトリを検索する

ディレクトリを検索する場合は検索したい文字列に続けて、ディレクトリ名を指定します。 この場合も「指定したディレクトリ配下のサブディレクトリも含む」再帰検索動作を行います。

rg [PATTERN] [DIRECTORY]