Modern CLI — ripgrep/fd/bat/exa

If you like this project, consider supporting me on Buy Me a Coffee ☕️

Basic Search / Базовый поиск

rg 'pattern'                                  # Search in current dir / Поиск в текущей директории
rg 'pattern' path/                            # Search in path / Поиск в пути
rg -i 'pattern'                               # Case-insensitive / Без учёта регистра
rg -w 'word'                                  # Match whole words / Совпадение целых слов
rg -v 'pattern'                               # Invert match / Обратное совпадение

Advanced Search / Продвинутый поиск

rg 'pattern' -n                               # Show line numbers / Показать номера строк
rg 'pattern' --hidden                         # Include hidden files / Включить скрытые файлы
rg 'pattern' -g '*.py'                        # Glob pattern / Glob паттерн
rg 'pattern' -g '!node_modules'               # Exclude pattern / Исключить паттерн
rg 'pattern' -t py                            # File type (Python) / Тип файла (Python)

Output Control / Управление выводом

rg 'pattern' -l                               # Files with matches / Файлы с совпадениями
rg 'pattern' -c                               # Count matches per file / Подсчитать совпадения по файлам
rg 'pattern' --no-heading                     # No file headers / Без заголовков файлов
rg 'pattern' -A 3                             # Show 3 lines after / Показать 3 строки после
rg 'pattern' -B 3                             # Show 3 lines before / Показать 3 строки до
rg 'pattern' -C 3                             # Show 3 lines context / Показать 3 строки контекста

Multiple Patterns / Несколько паттернов

rg 'pattern1|pattern2'                        # OR search / ИЛИ поиск
rg -e 'pattern1' -e 'pattern2'                # Multiple patterns / Несколько паттернов
rg 'pattern' --and 'other'                    # AND search / И поиск

Replacement / Замена

rg 'pattern' -r 'replacement' --passthru      # Replace (dry-run) / Замена (тестовый прогон)
rg 'pattern' -r 'replacement' --passthru | sponge file.txt  # Replace in file / Замена в файле

📂 fd — Fast Find

Basic Find / Базовый поиск

fd pattern                                    # Find pattern / Найти паттерн
fd -t f pattern                               # Files only / Только файлы
fd -t d pattern                               # Directories only / Только директории
fd -t l pattern                               # Symlinks only / Только символические ссылки

Extensions / Расширения

fd -e log                                     # Find .log files / Найти .log файлы
fd -e py -e js                                # Multiple extensions / Несколько расширений
fd . /path                                    # Find in path / Найти в пути

Advanced Options / Продвинутые опции

fd -H pattern                                 # Include hidden files / Включить скрытые файлы
fd -I pattern                                 # Don't respect .gitignore / Не учитывать .gitignore
fd -g '*.log' -g '!old*'                      # Glob patterns / Glob паттерны
fd -d 3 pattern                               # Max depth 3 / Макс глубина 3

Execute Commands / Выполнить команды

fd -t f -x cat {}                             # Execute on each / Выполнить на каждом
fd -t f -X vim                                # Execute once with all / Выполнить один раз со всеми
fd -e py -x python {}                         # Run Python files / Запустить Python файлы

🎨 bat — Better Cat

Basic Usage / Базовое использование

bat file.txt                                  # Show file / Показать файл
bat -p file.txt                               # Plain output (no line numbers) / Простой вывод
bat --style=plain file.txt                    # Same as above / То же что выше
bat -n file.txt                               # Show line numbers only / Показать только номера строк

Language / Syntax / Язык / Синтаксис

bat -l python file.txt                        # Force Python syntax / Принудительно Python синтаксис
bat --list-languages                          # List supported languages / Список поддерживаемых языков

Themes / Темы

bat --theme=TwoDark file.txt                  # Use theme / Использовать тему
bat --list-themes                             # List available themes / Список доступных тем

Paging / Пагинация

bat --paging=never file.txt                   # No pager / Без pager
bat --paging=always file.txt                  # Force pager / Принудительно pager

Integration / Интеграция

export BAT_THEME="Monokai Extended"           # Set default theme / Установить тему по умолчанию
alias cat='bat -p'                            # Replace cat / Заменить cat
export MANPAGER="sh -c 'col -bx | bat -l man -p'"  # Use as man pager / Использовать как man pager

📊 exa — Better ls

Basic Listing / Базовый список

exa                                           # List files / Список файлов
exa -l                                        # Long format / Длинный формат
exa -la                                       # Long + all files / Длинный + все файлы
exa -lh                                       # Long + human-readable / Длинный + удобочитаемый

Tree View / Вид дерева

exa --tree                                    # Tree view / Вид дерева
exa --tree -L 2                               # Tree depth 2 / Глубина дерева 2
exa --tree -I 'node_modules|.git'             # Tree with ignore / Дерево с игнорированием

Git Integration / Интеграция с Git

exa -l --git                                  # Show git status / Показать git статус
exa -l --git-ignore                           # Respect .gitignore / Учитывать .gitignore

Sorting / Сортировка

exa -l --sort=modified                        # Sort by modification time / Сортировать по времени модификации
exa -l --sort=size                            # Sort by size / Сортировать по размеру
exa -l --sort=extension                       # Sort by extension / Сортировать по расширению

Colors & Icons / Цвета и иконки

exa -l --color=always                         # Force colors / Принудительно цвета
exa -l --icons                                # Show icons / Показать иконки
exa -l --color-scale                          # Color by size / Цвет по размеру

🌟 Real-World Examples / Примеры из практики

Code Search / Поиск кода

# Find TODOs / Найти TODO
rg 'TODO|FIXME|XXX' -n

# Find function definition / Найти определение функции
rg 'def myfunction' -t py

# Search excluding tests / Поиск исключая тесты
rg 'pattern' -g '!*test*'

# Case-insensitive search in JS / Поиск без учёта регистра в JS
rg -i 'console.log' -t js

File Operations / Операции с файлами

# Find and delete old logs / Найти и удалить старые логи
fd -e log -X rm

# Find large files / Найти большие файлы
fd -t f -x du -h {} | sort -hr | head -20

# Find recent files / Найти недавние файлы
fd -t f --changed-within 1d

# Batch rename / Пакетное переименование
fd -e txt -x mv {} {.}.bak

Development Workflow / Рабочий процесс разработки

# Find all Python files / Найти все Python файлы
fd -e py -X bat

# Search and replace / Поиск и замена
rg 'old_function' -l | xargs sed -i 's/old_function/new_function/g'

# Count lines of code / Подсчитать строки кода
fd -e py -X wc -l | awk '{sum+=$1} END {print sum}'

Log Analysis / Анализ логов

# Search errors in logs / Поиск ошибок в логах
rg 'ERROR|FATAL' -t log

# Find errors with context / Найти ошибки с контекстом
rg 'ERROR' -C 5 /var/log/app.log

# Count error types / Подсчитать типы ошибок
rg 'ERROR' /var/log/app.log | cut -d':' -f3 | sort | uniq -c

Git Workflows / Git рабочие процессы

# Search in git-tracked files only / Поиск только в отслеживаемых файлах
rg 'pattern' --type-add 'tracked:include:$(git ls-files)'

# Show modified files / Показать измененные файлы
exa -l --git --git-ignore

# Tree view of project / Вид дерева проекта
exa --tree -L 3 -I 'node_modules|.git|dist'

System Administration / Системное администрирование

# Find config files / Найти конфигурационные файлы
fd -H -e conf -e config

# Search in system logs / Поиск в системных логах
rg 'error' /var/log/ -g '*.log'

# Find SUID binaries / Найти SUID бинарники
fd -t x -x test -u {} \; -print

Combining Tools / Комбинирование инструментов

# Search and open in editor / Поиск и открытие в редакторе
rg -l 'pattern' | fzf | xargs vim

# Find and preview files / Найти и предпросмотр файлов
fd -e md | fzf --preview 'bat --color=always {}'

# Interactive file search / Интерактивный поиск файлов
fd -t f | fzf --preview 'bat --color=always --line-range :50 {}'

💡 Best Practices / Лучшие практики

# Use ripgrep instead of grep for speed / Используйте ripgrep вместо grep для скорости
# Use fd instead of find for simplicity / Используйте fd вместо find для простоты
# Set bat as default pager / Установите bat как pager по умолчанию
# Use exa aliases for enhanced ls / Используйте алиасы exa для улучшенного ls
# Combine tools with fzf for interactivity / Комбинируйте инструменты с fzf для интерактивности
# Use --hidden and -I carefully / Используйте --hidden и -I осторожно

🔧 Aliases / Алиасы

alias cat='bat -p'
alias catn='bat'
alias ls='exa'
alias ll='exa -l'
alias la='exa -la'
alias lt='exa --tree'
alias grep='rg'
alias find='fd'

📋 Tool Comparison / Сравнение инструментов

Classic Tool Modern Tool Advantage / Преимущество
grep ripgrep (rg) 10-100x faster / 10-100x быстрее
find fd Simpler syntax, faster / Проще синтаксис, быстрее
cat bat Syntax highlighting / Подсветка синтаксиса
ls exa Colors, git integration / Цвета, интеграция с git

⚠️ Installation / Установка

# Ubuntu/Debian
apt install ripgrep fd-find bat exa

# Fedora
dnf install ripgrep fd-find bat exa

# macOS
brew install ripgrep fd bat exa

[!NOTE] On Debian/Ubuntu fd may be installed as fdfind. Create a symlink: ln -s $(which fdfind) ~/.local/bin/fd На Debian/Ubuntu fd может быть установлен как fdfind. Создайте симлинк: ln -s $(which fdfind) ~/.local/bin/fd

On this page

🔍 ripgrep — Fast Search Basic Search / Базовый поиск Advanced Search / Продвинутый поиск Output Control / Управление выводом Multiple Patterns / Несколько паттернов Replacement / Замена 📂 fd — Fast Find Basic Find / Базовый поиск Extensions / Расширения Advanced Options / Продвинутые опции Execute Commands / Выполнить команды 🎨 bat — Better Cat Basic Usage / Базовое использование Language / Syntax / Язык / Синтаксис Themes / Темы Paging / Пагинация Integration / Интеграция 📊 exa — Better ls Basic Listing / Базовый список Tree View / Вид дерева Git Integration / Интеграция с Git Sorting / Сортировка Colors & Icons / Цвета и иконки 🌟 Real-World Examples / Примеры из практики Code Search / Поиск кода File Operations / Операции с файлами Development Workflow / Рабочий процесс разработки Log Analysis / Анализ логов Git Workflows / Git рабочие процессы System Administration / Системное администрирование Combining Tools / Комбинирование инструментов 💡 Best Practices / Лучшие практики 🔧 Aliases / Алиасы 📋 Tool Comparison / Сравнение инструментов ⚠️ Installation / Установка