Bash-скрипты c нуля
Научитесь писать скрипты, которым можно доверить прод: аргументы и коды возврата, потоки и конвейеры, grep, sed и awk, поиск файлов и уборка за собой. Финальная работа — скрипт резервной копии с проверками, ротацией и внятными отказами.
Плюс то, на чём скрипты ломаются в реальности: пробелы в именах файлов, молчаливые ошибки, конвейеры, которые врут об успехе, повторный запуск и блокировка от второго экземпляра.
Чему вы научитесь
- Писать скрипты с понятными кодами возврата и правами доступа: shebang, chmod, коды возврата — разбираетесь на первом же уроке, а не подбираете на глаз.
- Работать с аргументами командной строки: $1, $@ против $*, shift и значения по умолчанию — без сюрпризов при пустых или множественных аргументах.
- Ловить тихие ошибки до того, как они дойдут до прода: set -euo pipefail и почему без него скрипт «врёт» об успехе.
- Разделять и перенаправлять потоки вывода: stdout и stderr по отдельности, конвейеры с tee, построчное чтение через while read -r с разбором ловушек IFS.
- Получать честный код возврата из конвейера через PIPESTATUS и pipefail — там, где обычный $? обманывает.
- Обрабатывать текст штатными инструментами: grep с -E/-o и границами слов, sed с диапазонами строк и опасностью -i, awk с полями, условиями, суммами и BEGIN/END — и собирать всё это в один конвейер под конкретную задачу.
- Безопасно работать с файлами и путями: проверки -f/-d/-s/-nt, кавычки против пробелов в именах, find по имени/типу/времени/размеру, xargs с -print0 — оттуда, где обычно всё ломается на пробелах.
- Убирать за собой: временные файлы через mktemp и гарантированную очистку через trap, даже если скрипт упал посередине выполнения.
- Строить логику скрипта: условия и case для разбора состояний, циклы и массивы (включая ассоциативные), функции с аргументами, возвратом и локальными переменными, getopts для опций и справки.
- Писать скрипты, которые переживают повторный запуск: идемпотентность и блокировка через flock, чтобы второй экземпляр не стартовал поверх первого.
О курсе
Подойдёт тем, кто уверенно работает в терминале, но пишет скрипты наугад и каждый раз ищет одно и то же в поиске. Продолжает курс «Основы командной строки Linux».
Каждый урок заканчивается практикой в живой оболочке: **вы пишете скрипт, а проверка запускает его по-настоящему** — смотрит на файлы, вывод и коды возврата, а не сверяет текст решения.
Курс собран вокруг того, **на чём скрипты ломаются в реальности**: пробелы в именах файлов, молчаливые ошибки, конвейеры, которые врут об успехе, повторный запуск и блокировка от второго экземпляра — это отдельные уроки, а не сноски мелким шрифтом.
Финальная работа — **скрипт резервной копии с проверками, ротацией и внятными отказами**: собираете весь курс в одном скрипте, который не стыдно оставить работать в проде.
Продолжает курс «Основы командной строки Linux» — если вы уверенно работаете в терминале, но пишете bash-скрипты наугад, здесь сразу переходите к сути, без повторения основ shell.
Вы также можете задать любой вопрос по курсу у поддержки t.me/mentorix_support
Для кого этот курс
Для тех, кто уверенно работает в терминале Linux, но пишет bash-скрипты наугад и каждый раз гуглит одно и то же — синтаксис условий, флаги grep, экранирование пробелов в путях.
Для тех, кому нужны не разовые команды, а скрипты, которые переживут повторный запуск, чужие руки и неожиданный ввод — с обработкой ошибок и проверками с самого начала, а не добавленными потом.
Для тех, кто уже прошёл «Основы командной строки Linux» и ищет логичный следующий шаг — от отдельных команд к полноценным скриптам с аргументами, логикой и логированием.
Что нужно знать
Уверенная работа в терминале Linux: базовые команды, навигация по файловой системе, права доступа — этому курс не учит с нуля (для этого есть «Основы командной строки Linux»).
Готовность писать и выполнять команды в живой оболочке — вся практика курса проходит именно там.
Предыдущий опыт написания скриптов не требуется: синтаксис bash разбирается с первого урока.
Программа курса
Модулей: 6, уроков: 25. Задачи с кодом проверяются автоматически.
Первый скрипт
- Скрипт как программа: shebang, права, коды возврата
- Переменные и подстановки: где скрипты ломаются на пробелах
- Аргументы: $1, $@ против $*, shift и значения по умолчанию
- set -euo pipefail: почему без него скрипт врёт об успехе
Потоки, перенаправления, конвейеры
- stdout и stderr: разделяем вывод и ошибки
- Конвейеры и tee: считаем и сохраняем одновременно
- Чтение построчно: while read -r и ловушки IFS
- Код возврата конвейера: PIPESTATUS и pipefail
Текст: grep, sed, awk
- grep: шаблоны, -E, -o, границы слов
- sed: замены, диапазоны строк и опасность -i
- awk: поля, условия, суммы, BEGIN и END
- Собираем конвейер под реальную задачу
Файлы, поиск и уборка
- Проверки файлов: -f, -d, -s, -nt и кавычки в путях
- find: по имени, типу, времени и размеру
- xargs и -print0: почему пробелы ломают связку
- Временные файлы: mktemp и уборка через trap
Логика и структура скрипта
- Условия и case: разбор состояний
- Циклы и массивы, включая ассоциативные
- Функции: аргументы, возврат, локальные переменные
- Опции командной строки: getopts и справка
Скрипт в проде
- Обработка ошибок: trap ERR и EXIT, понятные сообщения
- Идемпотентность: повторный запуск ничего не ломает
- Блокировка через flock: не запускаться дважды
- Логирование и отладка: bash -x, PS4, полезные сообщения
- Итоговый проект: скрипт резервной копии
Бесплатный курс
Открыть курс на Mentorix · Все курсы