「Linuxコマンド - rg」の版間の差分

提供: MochiuWiki : SUSE, EC, PCB

ページの作成:「== 概要 == <code>ripgrep</code> (コマンド名: <code>rg</code>) は、Rust で実装された高速な行指向のテキスト検索ツールである。<br> 日常的なソースコード検索、設定ファイル調査、ログ解析、複数リポジトリの横断検索に広く利用されている。<br> <br> ディレクトリを再帰的に走査し、正規表現パターンに一致する行を検索して表示する。<br> デフォルトで gitign…」
 
 
54行目: 54行目:
ビルドには、Rust 1.85.0以降が必要である。<br>
ビルドには、Rust 1.85.0以降が必要である。<br>
<br>
<br>
Rustのインストール方法については [[インストール_-_Rust]] を参照すること。<br>
Rustのインストール方法については [[インストール - Rust]] を参照すること。<br>
<br>
<br>
==== RHEL ====
==== RHEL ====

2026年6月1日 (月) 14:16時点における最新版

概要

ripgrep (コマンド名: rg) は、Rust で実装された高速な行指向のテキスト検索ツールである。
日常的なソースコード検索、設定ファイル調査、ログ解析、複数リポジトリの横断検索に広く利用されている。

ディレクトリを再帰的に走査し、正規表現パターンに一致する行を検索して表示する。
デフォルトで gitignore のルールを尊重し、隠しファイルやバイナリファイルを自動的にスキップする。

この自動フィルタリングを完全に無効化するには rg -uuu コマンドを使用する。
再帰検索がデフォルトであるため、明示的に -r オプションを指定する必要がない。

検索速度が非常に高く、特に大規模なコードベースや UTF-8 テキストの検索で優位性を持つ。
Windows、MacOS、Linuxをはじめとする主要プラットフォームをサポートしている。

各リリースのバイナリが GitHub Releases で提供されている。

デフォルトの正規表現エンジンは Rust の regex クレートであり、Unicodeサポートが常に有効である。
オプションでPCRE2エンジンに切り替えることができ、後読みや後方参照等の高度な正規表現が使える。

PCRE2は -P--pcre2--engine pcre2 等で利用できる。
grep、The Silver Searcher (ag)、ack 等の検索ツールと類似しているが、速度と使いやすさで差別化されている。

ファイル種別による絞り込み (-t)、圧縮ファイルの検索 (-z)、設定ファイルによる既定値の管理等の機能を持つ。
単一ファイルだけでなく、巨大なソースツリーやログディレクトリを横断して検索する用途に向いている。

検索対象を細かく絞り込みたい場合は、ファイル種別、隠しファイル、ignore ルール、圧縮ファイル等をオプションで制御できる。

インストール方法も多く、Linuxのパッケージ管理システム、GitHub Releases、cargo install 等が利用できる。

ソースコードからビルドする場合は、Rust 1.85.0以降のstableツールチェインが必要である。

公式配布バイナリの多くはPCRE2を含んでいるが、Linuxディストリビューションのパッケージでは構成が異なる場合がある。


rgのインストール

多くのLinuxディストリビューションでは、パッケージ管理システムでripgrepをインストールすることができる。

RHEL

sudo dnf install ripgrep


RHELでは、EPEL、CRB、CodeReady Builder 等の追加リポジトリ設定が必要になる場合がある。
ビルド済みパッケージが利用できない環境では、後述のソースコードからのビルドを利用するとよい。

SUSE

sudo zypper install ripgrep


その他のインストール方法

Homebrew (MacOS、Linux)、Chocolatey (Windows)、cargo等でもインストール可能である。

また、最新バイナリは GitHub Releases から直接ダウンロードできる。


ソースコードからインストール

ripgrepはRustで記述されており、ソースコードからビルドするにはRustツールチェインが必要である。
ビルドには、Rust 1.85.0以降が必要である。

Rustのインストール方法については インストール - Rust を参照すること。

RHEL

まず、ビルドに必要なツールをインストールする。

sudo subscription-manager repos --enable codeready-builder-for-rhel-$(rpm -E %rhel)-$(arch)-rpms
sudo dnf install gcc curl


Rustツールチェインをrustupでインストールする。

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y

. "$HOME/.cargo/env"

rustup toolchain install stable
rustup default stable


PCRE2サポートを有効にする場合は、追加で開発パッケージをインストールする。

sudo dnf install pkgconf-pkg-config pcre2-devel


MUSLによる静的リンクビルドを行う場合は、MUSLツールチェインを追加する。

sudo dnf install musl-gcc
rustup target add x86_64-unknown-linux-musl


SUSE

まず、ビルドに必要なツールをインストールする。

 sudo zypper install gcc curl rustup


Rustツールチェインを設定する。

rustup toolchain install stable
rustup default stable

. "$HOME/.cargo/env"


PCRE2 サポートを有効にする場合は、追加で開発パッケージをインストールする。

sudo zypper install pkg-config pcre2-devel


MUSL による静的リンクビルドを行う場合は、MUSLツールチェインを追加する。

sudo zypper install musl-devel
rustup target add x86_64-unknown-linux-musl


ビルド手順

ソースコードを取得してビルドする。

git clone https://github.com/BurntSushi/ripgrep.git
cd ripgrep


標準的なビルドは以下のコマンドで行う。

cargo build --release


PCRE2サポートを有効にする場合は、featuresを指定する。

 cargo build --release --features 'pcre2'


MUSLターゲットで静的リンクビルドを行う場合は、ターゲットを指定する。

 cargo build --release --target x86_64-unknown-linux-musl


ビルドが完了すると、生成物はビルド条件に応じた target 以下のディレクトリに配置される。
通常のビルドでは実行ファイルは target/release/rg に生成される。

--target x86_64-unknown-linux-musl オプションを指定した場合は、target/x86_64-unknown-linux-musl/release/rg に生成される。


rgコマンドの基本

rgコマンドの基本動作

ripgrepは、指定したパターンをファイルやディレクトリから検索するコマンドである。
デフォルトで再帰検索を行い、gitignore のルールに従ってファイルを自動的に除外する。

基本的な構文は次の通りである。

 rg <検索パターン> [パス]


パスを省略した場合、現在のディレクトリが再帰的に検索される。
以下の例では、カレントディレクトリ以下の全ファイルからfooという文字列を検索している。

 rg foo


特定のディレクトリのみを検索対象にする場合は、パスを指定する。

 rg foo src/


行番号を付加して結果を表示するには -n オプションを使用する。

 rg -n foo


隠しファイルや.gitignoreで無視されているファイルも含めて検索するには -uuu オプションを使用する。

 rg -uuu foo


圧縮ファイル (gzip等) も検索対象にするには -z オプションを使用する。

 rg -z foo


ファイル種別による絞り込み

ripgrepは、ファイルの拡張子や種別に応じて検索対象を絞り込める。
-t オプションで特定のファイル種別のみを対象とする。

 rg -tpy foo


上記の例では、Pythonファイルのみからfooを検索する。
-T オプションで特定のファイル種別を除外する。

 rg -Tjs foo


上記の例では、JavaScriptファイルを除外して検索する。
--type-list オプションでサポートされているファイル種別の一覧を表示できる。

 rg --type-list



rgコマンドの主要オプション

-iオプション : 大文字と小文字を区別せず検索する

-i オプションを付加すると、大文字と小文字を区別せずに検索できる。

 rg -i foo


-nオプション : 行番号を表示する

-n オプションは、検索結果に行番号を付加して表示する。

ripgrepではデフォルトで行番号が表示されるが、明示的に指定することもできる。

 rg -n foo


-lオプション : ファイル名のみ表示する

-l オプションは、パターンに一致したファイル名のみを表示する。

 rg -l foo


-vオプション : 一致しない行を表示する

-v オプションは、パターンに一致しない行を表示する。

 rg -v foo


-cオプション : 一致した行数を表示する

-c オプションは、各ファイルにおける一致した行数をカウントして表示する。

 rg -c foo


-Cオプション : 一致箇所の前後を表示する

-C オプションは、一致した行の前後に指定した行数を表示する。

 rg -C 2 foo


-wオプション : 単語単位で一致させる

-w オプションは、単語境界で囲まれた完全一致のみを検索する。

 rg -w foo


-Fオプション : 正規表現を使わず文字列として検索する

-F オプションは、パターンをリテラル文字列として扱い、正規表現の解釈を無効にする。

 rg -F 'foo.bar'


-eオプション : 複数パターンを指定する

-e オプションを複数回使用すると、複数のパターンをOR検索できる。

 rg -e foo -e bar


-uオプション : フィルタリングの解除

-u オプションを重ねて指定することで、自動フィルタリングを段階的に解除できる。
通常、ripgrepは、ignoreルール、隠しファイル、バイナリファイルを自動的に除外する。

  • -u オプション
    ignoreルールを無視する。
  • -uu オプション
    ignoreルールに加えて隠しファイルも検索対象に含める。
  • -uuu オプション
    バイナリファイルも検索対象に含める。


 rg -uuu foo


-zオプション : 圧縮ファイルを検索する

-z オプションは、gzip、bzip2、lzma、xz、lz4、zstd等の圧縮ファイルを展開して検索する。

 rg -z foo


--engineオプション : 正規表現エンジンの切り替え

--engine オプションで使用する正規表現エンジンを指定できる。

 rg --engine default foo


指定可能な値は以下の通りである。

  • default
    デフォルトのRust regexエンジンを使用する。
  • pcre2
    PCRE2エンジンを使用する。
    後読みや後方参照が使用できる。
  • auto
    パターンに応じて自動的にエンジンを切り替える。


--auto-hybrid-regex オプションは --engine auto オプションと同等である。


PCRE2対応

ripgrepは、デフォルトでRustの正規表現エンジンを使用する。
このエンジンは高速だが、後読み (look-behind) や 後方参照 (backreference) 等の高度な機能には対応していない。

PCRE2エンジンを使用すると、これらの高度な正規表現機能が利用できる。

PCRE2の有効化

ビルド時にPCRE2サポートを有効にしている場合、実行時に以下に示す方法でPCRE2を使用できる。
-P オプションを使用する。

 rg -P '(?<=foo)bar'


--pcre2 オプションを使用する。

 rg --pcre2 '(?<=foo)bar'


--engine pcre2 オプションを使用する。

 rg --engine pcre2 '(?<=foo)bar'


--auto-hybrid-regex オプションを使用すると、必要に応じて自動的にPCRE2が選択される。

 rg --auto-hybrid-regex '(?<=foo)bar'


PCRE2の制限

PCRE2は、デフォルトエンジンより速度が低下する場合がある。

ただし、全てのパターンでPCRE2が必要なわけではないため、必要な場合のみ使用するとよい。

--auto-hybrid-regex オプション または --engine auto オプションを使用すると、ripgrepが自動的に最適なエンジンを選択する。


関連情報