Учебник Bash для начинающих
Bash — это командная оболочка, которая стоит почти на каждом Linux-сервере и в каждом Docker-контейнере. Этот курс учит писать на ней настоящие скрипты: автоматизировать рутину, обрабатывать текст, собирать бэкапы и деплои, настраивать планировщик и делать всё это надёжно. Мы пройдём путь от первой команды в терминале до боевых скриптов с set -euo pipefail и обработкой ошибок через trap.
Курс рассчитан на тех, кто уже умеет программировать на любом языке, но хочет уверенно чувствовать себя в терминале и автоматизировать работу. Каждый урок — это разбор реальной задачи с примерами кода, схемами и памятками.
Курс «Bash: скрипты в терминале» состоит из 7 разделов и 22 уроков: Оболочка, терминал и первый скрипт, Переменные и подстановка, Потоки, пайпы и редиректы, Условия и циклы, Функции, аргументы и коды возврата, Обработка текста и Поиск, окружение, cron и надёжность. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.
Программа курса
1 Оболочка, терминал и первый скрипт
- Что такое оболочка и терминал
Чем отличается терминал от оболочки, что делает Bash, как читается командная строка и из чего состоит команда: имя, опции, аргументы.
- Shebang и запуск скрипта
Что такое shebang #!/usr/bin/env bash, как сделать скрипт исполняемым через chmod +x, три способа запуска скрипта и зачем нужно расширение .sh.
- Навигация и базовые команды файловой системы
Команды cd, ls, pwd, mkdir, cp, mv, rm, cat для навигации и работы с файлами в Bash, абсолютные и относительные пути, точка и тильда.
- Что такое оболочка и терминал
2 Переменные и подстановка
- Переменные и кавычки
Как объявлять переменные в Bash без пробелов вокруг =, разница между двойными, одинарными кавычками и без кавычек, фигурные скобки.
- Подстановка команд и арифметика
Подстановка команд $(...) в Bash, арифметика через $((...)), вложенность, разница со старым обратным апострофом и типичные ошибки.
- Массивы и значения по умолчанию
Индексные массивы в Bash, обращение к элементам и длине, перебор, а также подстановка значений по умолчанию через :- и проверки переменных.
- Переменные и кавычки
3 Потоки, пайпы и редиректы
- Три потока: stdin, stdout, stderr
Что такое стандартные потоки ввода-вывода в Bash, дескрипторы 0, 1, 2, разница между обычным выводом и выводом ошибок, перенаправление stderr.
- Редиректы в файлы и дозапись
Перенаправление вывода в файл оператором >, дозапись через >>, чтение из файла <, объединение stdout и stderr через 2>&1 в Bash.
- Пайпы и конвейеры команд
Конвейер команд через пайп | в Bash, передача stdout одной команды на stdin другой, цепочки фильтров grep, sort, uniq, wc и here-doc.
- Три потока: stdin, stdout, stderr
4 Условия и циклы
- Условия: if, test и сравнения
Конструкция if в Bash, команда test и скобки [ ], сравнение чисел через -eq -lt -gt, сравнение строк, проверка существования файлов -f -d.
- Оператор case
Конструкция case в Bash для выбора из нескольких вариантов, шаблоны со звёздочкой, ветка по умолчанию и обработка аргументов скрипта.
- Циклы for и while
Циклы for по списку и по файлам в Bash, числовой for в C-стиле, цикл while с условием и чтением строк, операторы break и continue.
- Условия: if, test и сравнения
5 Функции, аргументы и коды возврата
- Аргументы скрипта: $1, $@, $#
Позиционные параметры скрипта в Bash: $1 $2, все аргументы $@ и $*, число аргументов $#, имя скрипта $0 и сдвиг shift.
- Функции и локальные переменные
Объявление функций в Bash, передача им аргументов $1, локальные переменные через local, возврат значения через echo и код через return.
- Коды возврата и обработка ошибок команд
Код возврата команды $? в Bash, exit с кодом, операторы && и || для условного выполнения, проверка успеха команд в скриптах.
- Аргументы скрипта: $1, $@, $#
6 Обработка текста
- grep: поиск по тексту
Команда grep в Bash для поиска строк: фильтрация по подстроке, флаги -i -v -n -c -r, регулярные выражения и подсчёт совпадений.
- sed: потоковая замена
Потоковый редактор sed в Bash: замена текста s///, флаг g для всех вхождений, удаление строк, редактирование файла на месте -i и адреса строк.
- awk и cut: работа с колонками
Обработка колонок в Bash: awk для полей $1 $2 и вычислений, cut для выделения столбцов, разделители полей и фильтрация табличных данных.
- grep: поиск по тексту
7 Поиск, окружение, cron и надёжность
- find и xargs: поиск и пакетная обработка
Поиск файлов в Bash командой find по имени, типу, размеру и времени, выполнение действий через -exec и пакетная обработка результатов через xargs.
- Переменные окружения, PATH, права и процессы
Переменные окружения и export в Bash, как устроен PATH, права доступа chmod и rwx, просмотр и завершение процессов ps, kill и фоновые задачи jobs.
- Планировщик cron
Планировщик задач cron в Bash: формат пяти полей расписания crontab, примеры запуска по минутам, часам и дням, окружение cron и логирование задач.
- Надёжность: set -euo pipefail, trap, отладка
Надёжные Bash-скрипты: set -e -u -o pipefail для остановки на ошибках, trap для очистки при выходе, отладка через set -x и безопасные практики.
- find и xargs: поиск и пакетная обработка