В этой заметке я составил небольшой roadmap для тех, кто хочет научиться программировать на языке оболочки Bash.
🖐️Эй!
Подписывайтесь на наш телеграм @r4ven_me📱, чтобы не пропустить новые публикации на сайте😉. А если есть вопросы или желание пообщаться по тематике — заглядывайте в Вороний чат @r4ven_me_chat🧐.
Данная карта составлена по моему опыту изучения написания сценариев Bash. Не пугайтесь её объёма: если вы изучите хотя бы четверть приведённого здесь материала, вы уже сможете решать многие задачи, связанные с автоматизацией Linux путём написания Bash скриптов.
Шаг 0. Про работу в командной строке
Важный шаг! Если вы неуверенно чувствуете себя при работе в командной строке Linux, не спешите писать скрипты. Сперва стоит научиться понимать и использовать на практике основные команды и механизмы оболочки☝️.
В моём блоге есть отдельный цикл статей по командной строке Linux, рассчитанный на новичков (и не только). Изучив данный цикл, вы сможете уверенно выполнять большинство типичных задач, встречающихся в терминале Linux👨💻.
Ниже приведены ссылки на статьи из данного цикла:
Командная строка Linux
- Типы команд, plain text, файловая система, shell prompt
- Навигация в системе и просмотр директорий: команды pwd, ls, cd
- Вывод и чтение содержимого: команды echo, cat, less
- Работа с файлами: команды touch, mkdir, cp, mv, rm
- Ссылки на файлы (links): команда ln
- Перенаправление ввода и вывода: операторы “>”, “<”, “|”
- Контроль выполнения команд: операторы “&&”, “||”, “;” и “&”
- Процессы: команды jobs, fg, bg, ps, pgrep, kill, pkill, htop
- Права на файлы: команды id, chmod, chown
- Повышение привилегий: команды su, sudo
- Архивирование и сжатие: команды tar, gzip, bzip2, xz, zstd и zip, 7z, rar
Шаг 1. Цикл статей на Habr (первая часть)
Сегодня множество продвинутых пользователей Linux начинают свой путь в автоматизации уничтожения системы именно со статей на Habr, указанных ниже👇.
Я намеренно разбил их на две части, т.к. статьи из второй части подразумевают более продвинутое использование конкретных утилит🤷♂️.
Собственно, самое начало скриптописания:
Список статей первой части
Шаг 2. Книга “Командная строка Linux”
Данный шаг может выступать в качестве альтернативы предыдущему - только в книжном формате и местами более углублённо, но при этом доступно для понимания👽.
Книга: “Командная строка Linux”, автор - Уильям Шотс. А конкретнее, её 4-я часть: Сценарии командной оболочки.
Я бы рекомендовал прочитать всю книгу целиком - местами она удивит даже суперопытного пользователя. Но если цель - научиться правильно писать shell скрипты, то…
Содержание 4-й части книги
- Создание первого сценария командной оболочки
- Начало проекта
- Проектирование сверху вниз
- Управление потоком выполнения: ветвление при помощи if
- Чтение ввода с клавиатуры
- Управление потоком выполнения: циклы while и until
- Поиск и устранение ошибок
- Управление потоком выполнения: ветвление с помощью case
- Позиционные параметры
- Управление потоком выполнения: цикл for
- Строки и числа
- Массивы
- Экзотика
Книгу можно купить или с лёгкостью найти где-нибудь ещё. Ну, вы меня поняли 😉.
Шаг 3. Цикл статей на Habr (вторая часть)
Если вы дошли до этого этапа - значит, вы уже что-то умеете и готовы заставить свой мозг вскипеть🔥.
Статьи из этого шага изучать не обязательно, но очень рекомендуется☝️. sed
, awk
и регулярки будут часто попадаться вам на глаза, если вы активно изучаете Linux системы🐧.
Также здесь есть статья с подборками практических примеров и демонстрацией возможностей команды expect
:
Список второй части
Шаг 4. Обязательно к прочтению
После всего пройденного очень важно ознакомиться с тонкостями программирования на Bash. Оболочка - инструмент специфический, в её работе есть множество нюансов. Поэтому, на мой взгляд, обязательны к прочтению две статьи ниже📑.
В первой демонстрируется минимальный безопасный шаблон Bash скрипта, а во второй рассказывается про особенности работы скриптов, написанных на языке этой оболочки.
Шаг 5. Мои материалы
Если после всего у вас сохранился интерес к скриптингу на Bash, можете изучить тематические материалы моего блога:
Статьи про скриптописание
- Немного про shebang в Linux
- Настройка логирования вывода команд/скриптов
- flock — блокировки в shell скриптах
- Bash: Особенности арифметических операций — инкремент ((expression++))
- Bash: Пример оптимизации команд фильтрации с grep и awk
- Пишем bash скрипт для подключения к OpenConnect VPN серверу
- Bash: Пишем универсальный скрипт проверки доступности хостов
Или изучить скрипты, использовавшиеся в некоторых статьях:
Скрипты как часть статьи
- Статья: SSH – Тонкая настройка клиента в Linux: config файл и ssh-agent
- Статья: Собираем docker образ DNS сервера Unbound
- Статья: Поднимаем сервер мониторинга Zabbix 7 + TimescaleDB в docker
- Статья: Делаем функциональные уведомления на рабочем столе Linux: кнопки, иконки, ссылки
- GitHub: Скрипт вывода уведомлений
- Статья: Поднимаем OpenConnect SSL VPN сервер (ocserv) в docker для внутренних проектов
Скрипты Bash - это основа автоматизации Linux. Этот навык требует во многих DevOps/админских вакансиях на рынке IT👨💻. Да, существует множество других инструментов, с помощью которых можно решать те же задачи, например, Python, Lua, Perl, PHP, JavaScript, Go, C, Rust и пр. Но ведь истина всегда где-то посередине. Как говорится, под каждую задачу - свои инструменты😌.
Изучайте Bash. Желаю удачи в скриптописании!