Назад

January 28, 2025

🔎 Як шукати код за допомогою grep: практичні поради для розробників

Пошук тексту чи шаблонів у коді — одна з найпоширеніших задач у роботі розробника. Вам може знадобитися знайти змінну, визначити джерело помилки, перевірити використання CSS-класів, знайти зображення в HTML або Markdown-файлах чи навіть знайти рядки у логах вашої програми.

У цій статті ми розглянемо, що таке grep, для чого він використовується, і чому це один із найпотужніших інструментів для пошуку. Розглянемо приклади використання, і продемонструю, як покращити ваш робочий процес.

Чому варто вивчити grep?

Інтегровані середовища розробки (IDE) пропонують зручні інструменти для пошуку, але вони доступні не завжди. Наприклад, у ситуаціях, коли потрібно знайти проблему безпосередньо на сервері, у терміналі, або працювати з великим проєктом без доступу до графічного інтерфейсу, можливості IDE можуть бути недоступними. У таких випадках grep стає незамінним інструментом, що дозволяє швидко й ефективно виконати пошук прямо з командного рядка.

  • Швидкість: Швидкий пошук великих обсягів тексту.
  • Доступність: Встановлений майже на всіх серверах та машинах.
  • Гнучкість: Проста інтеграція з іншими інструментами через пайплайни.
  • Універсальність: Підтримка складних шаблонів і регулярних виразів.
  • Покращення навичок: Вивчення регулярних виразів корисне не лише у grep, а й у різних мовах програмування.

Що таке grep?

grep — це команда командного рядка, яка дозволяє шукати текстові шаблони у файлах за допомогою регулярних виразів. Основний синтаксис:

grep "шаблон" файл

Щоб дізнатися, яка версія grep встановлена:

grep --version
# grep (BSD grep, GNU compatible) 2.6.0-FreeBSD

Якщо ви не пам’ятаєте, як працює grep, скористайтеся man grep для перегляду документації:

man grep
# Натисніть "q", щоб вийти 😁

Основні приклади використання:

1. Пошук у конкретному файлі

Припустимо, вам потрібно знайти використання CSS-класу btn-primary у файлі styles.css:

grep "btn-primary" styles.css
# .btn-primary { background-color: #0099ff; color: #fff; }

2. Рекурсивний пошук у директорії

Потрібно знайти функцію handleClick у всьому проєкті:

grep -r "handleClick" ./src
# ./src/components/Button.js: const handleClick = () => { ... }
# ./src/utils/helpers.js: export const handleClick = (event) => { ... }

3. Ігнорування директорій і файлів

Виключіть директорію node_modules і файл package-lock.json, щоб уникнути зайвих збігів:

grep -r --exclude-dir="node_modules" --exclude="package-lock.json" "useState" .
# ./src/hooks/useAuth.js: import { useState } from "react";

4. Чутливість до регістру

Пошук слова css, незалежно від регістру:

grep -ri "CSS" ./src
# ./src/styles/main.css: body { font-family: Arial, sans-serif; }

5. Використання регулярних виразів

Знайдіть усі функції, які починаються з get:

grep -r "function get[A-Za-z]+" ./src
# ./src/utils/api.js: function getUserData() { ... }
# ./src/hooks/useData.js: function getData(id) { ... }

Пошук у складних проєктах

Рекурсивний пошук у Markdown-файлах

Знайдіть усі згадки про API-документацію у файлах .md:

grep -r "API documentation" ./docs
# ./docs/setup.md: API documentation is available at /api.
# ./docs/endpoints.md: Use the following API documentation to configure routes.

Виключення двійкових файлів

Щоб уникнути збігів у зображеннях, використовуйте прапор --binary-files:

grep -ri --binary-files=without-match "button" ./src

Або скористайтеся прапором -I:

grep -riI "button" ./src

Використання регулярних виразів для пошуку шаблонів

Знайдіть всі файли, де вказані заголовки з HTTP-статусами:

grep -r "title: [0-9]{3}" ./docs
# ./docs/errors/404.md:title: 404 Not Found
# ./docs/errors/500.md:title: 500 Internal Server Error

Створення потужних пайплайнів із grep

Використовуйте grep разом із іншими командами через | для створення ефективних команд:

Підрахунок використання функції useEffect у проєкті

grep -r "useEffect" ./src | wc -l
# 25

Цей приклад знаходить усі згадки useEffect у вашому коді й підраховує їх кількість.

Висновок:

grep — це незамінний інструмент для розробників. Його потужність і гнучкість допомагають швидко знаходити потрібні дані у проєктах, оптимізувати робочий процес і покращити продуктивність. Навчившись працювати з grep, ви отримаєте інструмент, який стане вашим помічником у пошуку й аналізі коду.