DevOps и инфраструктура

Учебник Bash для начинающих

22 урока · 7 разделов · бесплатно, без регистрации

Bash — это командная оболочка, которая стоит почти на каждом Linux-сервере и в каждом Docker-контейнере. Этот курс учит писать на ней настоящие скрипты: автоматизировать рутину, обрабатывать текст, собирать бэкапы и деплои, настраивать планировщик и делать всё это надёжно. Мы пройдём путь от первой команды в терминале до боевых скриптов с set -euo pipefail и обработкой ошибок через trap.

Курс рассчитан на тех, кто уже умеет программировать на любом языке, но хочет уверенно чувствовать себя в терминале и автоматизировать работу. Каждый урок — это разбор реальной задачи с примерами кода, схемами и памятками.

Курс «Bash: скрипты в терминале» состоит из 7 разделов и 22 уроков: Оболочка, терминал и первый скрипт, Переменные и подстановка, Потоки, пайпы и редиректы, Условия и циклы, Функции, аргументы и коды возврата, Обработка текста и Поиск, окружение, cron и надёжность. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.

Программа курса

  1. 1 Оболочка, терминал и первый скрипт

    1. Что такое оболочка и терминал

      Чем отличается терминал от оболочки, что делает Bash, как читается командная строка и из чего состоит команда: имя, опции, аргументы.

    2. Shebang и запуск скрипта

      Что такое shebang #!/usr/bin/env bash, как сделать скрипт исполняемым через chmod +x, три способа запуска скрипта и зачем нужно расширение .sh.

    3. Навигация и базовые команды файловой системы

      Команды cd, ls, pwd, mkdir, cp, mv, rm, cat для навигации и работы с файлами в Bash, абсолютные и относительные пути, точка и тильда.

  2. 2 Переменные и подстановка

    1. Переменные и кавычки

      Как объявлять переменные в Bash без пробелов вокруг =, разница между двойными, одинарными кавычками и без кавычек, фигурные скобки.

    2. Подстановка команд и арифметика

      Подстановка команд $(...) в Bash, арифметика через $((...)), вложенность, разница со старым обратным апострофом и типичные ошибки.

    3. Массивы и значения по умолчанию

      Индексные массивы в Bash, обращение к элементам и длине, перебор, а также подстановка значений по умолчанию через :- и проверки переменных.

  3. 3 Потоки, пайпы и редиректы

    1. Три потока: stdin, stdout, stderr

      Что такое стандартные потоки ввода-вывода в Bash, дескрипторы 0, 1, 2, разница между обычным выводом и выводом ошибок, перенаправление stderr.

    2. Редиректы в файлы и дозапись

      Перенаправление вывода в файл оператором >, дозапись через >>, чтение из файла <, объединение stdout и stderr через 2>&1 в Bash.

    3. Пайпы и конвейеры команд

      Конвейер команд через пайп | в Bash, передача stdout одной команды на stdin другой, цепочки фильтров grep, sort, uniq, wc и here-doc.

  4. 4 Условия и циклы

    1. Условия: if, test и сравнения

      Конструкция if в Bash, команда test и скобки [ ], сравнение чисел через -eq -lt -gt, сравнение строк, проверка существования файлов -f -d.

    2. Оператор case

      Конструкция case в Bash для выбора из нескольких вариантов, шаблоны со звёздочкой, ветка по умолчанию и обработка аргументов скрипта.

    3. Циклы for и while

      Циклы for по списку и по файлам в Bash, числовой for в C-стиле, цикл while с условием и чтением строк, операторы break и continue.

  5. 5 Функции, аргументы и коды возврата

    1. Аргументы скрипта: $1, $@, $#

      Позиционные параметры скрипта в Bash: $1 $2, все аргументы $@ и $*, число аргументов $#, имя скрипта $0 и сдвиг shift.

    2. Функции и локальные переменные

      Объявление функций в Bash, передача им аргументов $1, локальные переменные через local, возврат значения через echo и код через return.

    3. Коды возврата и обработка ошибок команд

      Код возврата команды $? в Bash, exit с кодом, операторы && и || для условного выполнения, проверка успеха команд в скриптах.

  6. 6 Обработка текста

    1. grep: поиск по тексту

      Команда grep в Bash для поиска строк: фильтрация по подстроке, флаги -i -v -n -c -r, регулярные выражения и подсчёт совпадений.

    2. sed: потоковая замена

      Потоковый редактор sed в Bash: замена текста s///, флаг g для всех вхождений, удаление строк, редактирование файла на месте -i и адреса строк.

    3. awk и cut: работа с колонками

      Обработка колонок в Bash: awk для полей $1 $2 и вычислений, cut для выделения столбцов, разделители полей и фильтрация табличных данных.

  7. 7 Поиск, окружение, cron и надёжность

    1. find и xargs: поиск и пакетная обработка

      Поиск файлов в Bash командой find по имени, типу, размеру и времени, выполнение действий через -exec и пакетная обработка результатов через xargs.

    2. Переменные окружения, PATH, права и процессы

      Переменные окружения и export в Bash, как устроен PATH, права доступа chmod и rwx, просмотр и завершение процессов ps, kill и фоновые задачи jobs.

    3. Планировщик cron

      Планировщик задач cron в Bash: формат пяти полей расписания crontab, примеры запуска по минутам, часам и дням, окружение cron и логирование задач.

    4. Надёжность: set -euo pipefail, trap, отладка

      Надёжные Bash-скрипты: set -e -u -o pipefail для остановки на ошибках, trap для очистки при выходе, отладка через set -x и безопасные практики.