Как установить ripgrep (rg) на macOS, Linux и Windows: regex и .gitignore

Установить rg на трёх ОС, выполнить первый regex-поиск и понять фильтр .gitignore.

Для быстрого поиска в коде ripgrep (rg) удобнее grep -r: по умолчанию уважает .gitignore и хорошо параллелится. Официальные пути установки на macOS, Linux и Windows для читателей hereink.

Запрос — как установить ripgrep и искать по regex. В конце вы запустите первый rg в корне проекта и поймёте, как отсекаются игнорируемые файлы.

macOSHomebrew или релизный бинарник
LinuxПакеты или cargo
Windowswinget / MSI / Scoop
установка rgпервый поискправила gitignore

Что решает ripgrep

Меньше ловушек grep

grep -r заходит в node_modules, dist и .git. rg по умолчанию читает .gitignore, .ignore и глобальные правила.

Regex без экзамена POSIX

Движок Rust: \d, группы, якоря. Литералы, регистр и фильтры типов покрывают большинство первых задач.

Проверка: rg --version. Репозиторий: github.com/BurntSushi/ripgrep.

Установка rg на трёх ОС

  1. 1
    macOS (Homebrew)

    brew install ripgrep. Проверка: which rg и rg --version.

  2. 2
    Linux (дистрибутив)

    Debian/Ubuntu: sudo apt update && sudo apt install ripgrep. Fedora: sudo dnf install ripgrep. Arch: sudo pacman -S ripgrep. Или tarball с GitHub Releases.

  3. 3
    Windows

    winget install BurntSushi.ripgrep.MSVC или MSI. Scoop: scoop install ripgrep. Новый терминал, затем rg --version.

  4. 4
    Опционально: Rust

    cargo install ripgrep, если Rust уже установлен.

Базовый regex-поиск

rg "useState" src/
rg -i "error" .
rg "^function\s+\w+" --type js
rg -l "TODO" .
rg -n -C 2 "api/v1" 

Из корня репозитория rg поднимается к .git и применяет правила ignore.

.gitignore и исключения

ЦельКомандаЗаметка
По умолчаниюrg patternПропускает пути из .gitignore
Искать игнорируемоеrg --no-ignore patternШумно, для артефактов сборки
Доп. исключениеrg --glob '!*.min.js' fooФильтр поверх ignore
Одно расширениеrg -t py "def main"--type-list показывает типы
Подходит
Поиск символов, env-переменных, TODO в monorepo; трассировка строки CI-лога к файлу.
Не подходит
Массовая замена в файлах; индексация больших бинарников.
rg полностью заменяет grep?

Нет. rg для деревьев с ignore; grep для пайпов и одного файла.

Почему нет строк в node_modules?

Обычно в .gitignore. rg --no-ignore или поиск внутри папки.

Windows не видит rg?

Откройте терминал заново. where rg. Ручной zip требует PATH.

После поиска — сверить план

Архитектуру удобнее на одном рисунке. Короткой комнате лишний стек не нужен — как создать пространство.

Начать