ServerAID
Найти гайд, команду, тег… ⌘ K
Shell и скрипты

Shell и скрипты на Ubuntu: bash, awk, sed, grep

Этот раздел собирает базовый shell-арсенал, без которого серверный быт невозможен: bash как язык, find и grep для навигации, sed и awk для обработки текста, wget для скачивания. Каждый блок ведёт на подробный разбор с примерами.

Что входит в shell-арсенал админа

Большинство задач на сервере решается без редактора кода и интерпретатора Python — достаточно bash и пары стандартных утилит. Набор делится на три класса:

  • Язык: bash — условия, циклы, массивы, функции, чтобы автоматизировать рутину.
  • Навигация: find и grep — находить файлы и нужные строки в логах.
  • Обработка текста: sed и awk — менять файлы пакетно и считать колонки.
  • Сеть-утилиты: wget, curl — забирать файлы и API-ответы.

Эти инструменты есть в любой Ubuntu из коробки и комбинируются через пайплайн.

bash как язык: условия и массивы

Скрипты на bash живут до сотни строк, дальше лучше Python. Но базовая логика — if/then/else, циклы for/while, массивы, проверки кодов возврата — покрывает 90% задач автоматизации. Условные конструкции — в bash if-else-elif-fi, массивы — в bash массивы.

find: поиск файлов

find ищет файлы по имени, размеру, времени модификации, типу. С опцией -exec сразу выполняет действие над найденным: удалить, переместить, изменить права. Полный набор паттернов — в find на Linux: руководство.

grep: поиск по содержимому

grep находит строки в файлах по регулярному выражению. Базовая утилита для разбора логов, поиска по конфигам и фильтрации вывода других команд. См. grep на Linux: поиск по тексту.

sed: потоковая правка файлов

sed редактирует файлы построчно по шаблонам — заменяет, удаляет, вставляет. Идеален для пакетных правок конфигов в инвентаре. Базовая замена и хитрости с in-place — в sed на Linux: потоковый редактор.

awk: обработка колонок и отчёты

awk парсит структурированный текст: лог-файлы с колонками, CSV, вывод ls -l или ps. Считает суммы, средние, фильтрует, форматирует. См. awk на Linux: руководство.

wget: скачивание из командной строки

wget забирает файлы по HTTP/FTP с поддержкой докачки и рекурсии. Удобен в скриптах деплоя и в Dockerfile. См. wget на Linux: скачивание файлов.

Связка: пайплайн как программа

Сила shell — в комбинировании. Поиск процессов, занимающих память:

ps aux | awk '$4 > 1.0 {print $2, $4, $11}' | sort -k2 -nr | head

Это найти процессы, потребляющие >1% памяти, отсортировать по объёму и показать топ. Тот же подход — для логов nginx через grep + awk + sort.

Частые вопросы

bash или zsh — что выбрать?

На сервере — bash (он везде и совместим со скриптами). На рабочей машине — что нравится; zsh красивее и удобнее интерактивно, но для скриптов всё равно нужен POSIX-совместимый код.

Когда переходить с bash на Python?

Если скрипт перевалил за 200 строк, оперирует структурами данных сложнее массивов, требует HTTP-клиент или работу с JSON — Python.

Чем awk отличается от sed?

sed — построчная замена и удаление по шаблонам, не понимает структуру строки. awk — мини-язык программирования с автоматическим разбиением строки на поля и арифметикой. Замена → sed, отчёт по логу → awk.

Какую кодировку держать в скриптах?

UTF-8 без BOM. Ubuntu использует UTF-8 по умолчанию, и любые cat/grep/awk работают с ней корректно.

Что запомнить

  • bash — основной язык скриптов на сервере, до 200 строк его хватает.
  • find — поиск файлов; grep — поиск строк; sed — замена в файлах; awk — отчёты по колонкам.
  • Пайплайн | склеивает утилиты в полноценные программы.
  • Для скачивания файлов в скриптах — wget; для API-запросов — curl.
  • На сервере держим bash, не zsh: совместимость скриптов важнее эстетики.
  • Когда скрипт перерастает 200 строк — пересаживаемся на Python.

Похожие материалы

Shell и скрипты

awk в Linux: обработка табличных данных и логов с примерами

awk — миниатюрный язык программирования для построчной обработки текста. Идеально подходит для работы с таблицами, CSV, логами и любыми данными со столбцами: автоматически разделяет каждую строку на поля и даёт удобный синтаксис фильтрации и преобразования. Разбираем базовый синтаксис, переменные, шаблоны, действия и десяток рецептов для повседневной работы администратора Ubuntu.

Редакция
Shell и скрипты

grep в Linux: поиск по тексту с регулярками и примерами для Ubuntu

grep — главный инструмент поиска по содержимому файлов в Linux. Умеет работать с регулярными выражениями POSIX и PCRE, рекурсивно обходить директории, считать совпадения, показывать контекст вокруг строки. Разбираем синтаксис, ключевые флаги, тонкости с регулярками и десяток рецептов для повседневной работы администратора Ubuntu.

Редакция
Shell и скрипты

find в Linux: руководство по поиску файлов с примерами для Ubuntu

find — самый мощный инструмент поиска файлов в Linux. В отличие от locate он смотрит файловую систему вживую, поддерживает фильтрацию по имени, размеру, времени изменения, правам, владельцу и умеет выполнять действие над найденным. Разбираем синтаксис, ключевые предикаты и десяток рецептов, которые покрывают 95% реальных задач администратора Ubuntu.

Редакция
Shell и скрипты

sed на Linux: замена строк, правка in-place и регулярки

sed (stream editor) — стандартная команда Linux для построчной обработки текста: замена, удаление, печать строк по шаблону. Работает с потоком (pipe) или файлами, поддерживает in-place редактирование. Базовый инструмент шелл-скриптов после `grep` и `awk`.

Редакция