Курс посвящён эффективной работе в командной строке Linux и разработке надёжных Bash-скриптов для автоматизации повседневных задач системного администрирования, сопровождения инфраструктуры и обработки текстовых данных.
Слушатели освоят синтаксис Bash, работу с переменными, параметрами и кодами завершения, перенаправление потоков, конвейеры, регулярные выражения, обработку файлов и журналов, создание функций и сценариев с интерфейсом командной строки. Практическая часть построена на прикладных задачах: резервное копирование, контроль свободного места, массовая обработка файлов, анализ журналов и автоматизация административных процедур.
По окончании курса слушатель сможет:
• Уверенно работать в Bash и использовать стандартные утилиты Linux для поиска, фильтрации и преобразования данных.
• Применять перенаправления стандартных потоков, конвейеры, here-документы и подстановки команд.
• Создавать Bash-скрипты с переменными, параметрами командной строки, ветвлениями, циклами и функциями.
• Проверять входные данные, обрабатывать ошибки, использовать коды возврата и отладку сценариев.
• Разрабатывать переносимые сценарии автоматизации задач администрирования.
• Использовать grep, sed, awk, find, xargs, cut, tr, sort, uniq и другие утилиты в составе командных конвейеров и скриптов.
• Реализовывать сценарии с обработкой сигналов, интерактивными меню и параметрами командной строки.
Предварительные требования
• Уверенная работа в Linux на уровне пользователя: файлы, каталоги, права доступа, запуск программ.
• Базовое владение командной строкой Linux.
• Понимание назначения процессов, файловой системы и текстовых конфигурационных файлов.
• Желателен опыт работы системным администратором, специалистом технической поддержки, DevOps-инженером или разработчиком.
Аудитория курса:
• Системные администраторы Linux и Windows, работающие с Linux-серверами.
• Инженеры технической поддержки и эксплуатации.
• DevOps-инженеры и специалисты по сопровождению информационных систем.
• Разработчики, которым необходима автоматизация задач в Linux.
• Специалисты по информационной безопасности, анализирующие журналы, конфигурации и системные данные.
День 1. Командная строка Bash
Глава 1. Оболочка и рабочая среда
• Назначение командной оболочки в Unix/Linux.
• Оболочки Bourne Shell (sh), Bash, Korn shell (ksh), C shell (csh), Z Shell (zsh); место Bash в Linux и в MacOS и других Unix-системах.
• Использование Bash в Windows
• Интерактивный режим и выполнение сценариев.
• Строка shebang: выбор интерпретатора сценария.
• Преимущества и ограничения Bash-скриптов.
• Структура и правила оформления Bash-скрипта.
• Комментарии, права на выполнение, способы запуска сценариев.
Упражнение: создание и запуск первого Bash-скрипта.
Глава 2. Настройка Bash
• Login shell и non-login shell.
• Файлы инициализации: /etc/profile, /etc/bash.bashrc, ~/.profile, ~/.bash_profile, ~/.bashrc.
• Повторное применение настроек с source и ..
• Псевдонимы команд: alias, unalias.
• Исследование команд с type, command, which.
• История команд: history, поиск и повторное выполнение команд.
• Настройка приглашения командной строки PS1.
Практическая работа: настройка пользовательской среды Bash и набора безопасных алиасов.
Глава 3. Файлы, шаблоны и кавычки
• Пути, имена файлов, специальные символы.
• Шаблоны имён файлов: *, ?, [], диапазоны и отрицания.
• Brace ({ } ) expansion: создание наборов файлов и каталогов.
• Tilde (~) expansion: сокращённая запись домашних каталогов.
• Одинарные, двойные кавычки и экранирование.
• Безопасная обработка имён файлов с пробелами и специальными символами.
• Проверка развёртывания шаблонов перед выполнением потенциально опасных команд.
Лабораторная работа 1. Работа с файлами, шаблонами и безопасным удалением данных.
День 2. Потоки, конвейеры и обработка текста
Глава 4. Стандартные потоки и перенаправления
• Стандартный ввод, вывод и поток ошибок: stdin, stdout, stderr.
• Дескрипторы файлов 0, 1 и 2.
• Перенаправление ввода и вывода: <, >, >>.
• Перенаправление ошибок: 2>, 2>>, 2>&1.
• Перенаправление всего вывода: &>.
• Использование /dev/null.
• Here-document и here-string.
• Диагностика и разделение обычного вывода и сообщений об ошибках.
Упражнение: создание отчёта о системе с раздельным журналированием ошибок.
Глава 5. Конвейеры и комбинирование команд
• Конвейер | и передача данных между процессами.
• Последовательное и фоновое выполнение: ;, &.
• Условное выполнение: &&, ||.
• Группировка команд в подкомандной оболочке.
• Коды завершения и переменная $?.
• Утилита tee: одновременный вывод на экран и в файл.
• Утилита xargs: преобразование стандартного ввода в аргументы команд.
• Безопасная обработка файлов с find -print0 и xargs -0.
Практическая работа: построение конвейеров для сбора, фильтрации и сохранения системной информации.
Глава 6. Поиск и преобразование текста
• Назначение регулярных выражений.
• Базовые и расширенные регулярные выражения.
• Утилиты grep, grep -E, grep -v, grep -r, grep -n.
• Поиск файлов с find.
• Утилиты cut, sort, uniq, wc, head, tail, tr.
• Введение в потоковый редактор sed: адресация строк, удаление, замена, печать.
• Введение в awk: поля, разделители, условия, форматированный вывод.
• Обработка /etc/passwd, системных журналов и результатов служебных команд.
Лабораторная работа 2. Анализ текстовых файлов и журналов с grep, sed, awk и конвейерами.
День 3. Основы Bash-скриптов
Глава 7. Переменные и окружение
• Локальные переменные оболочки и переменные окружения.
• Присваивание и использование переменных.
• export, unset, env, set.
• Важные переменные Bash: HOME, PATH, PWD, IFS, SHELL, PS1.
• Позиционные параметры: $0, $1–$9, $#, $*, $@.
• Идентификатор процесса $$.
• Подстановка значений переменных и использование фигурных скобок.
• Значения по умолчанию и проверка наличия параметров.
Упражнение: сценарий формирования отчёта с параметрами, переменными окружения и каталогом назначения.
Глава 8. Подстановки и вычисления
• Подстановка команд: $(command).
• Арифметическое раскрытие: $(( expression )).
• Арифметические операции и целочисленные переменные.
• Команда declare и атрибуты переменных.
• Порядок интерпретации командной строки Bash.
• Разделители команд и влияние кавычек на расширения.
• Разбор типичных ошибок при использовании переменных и подстановок.
Практическая работа: сценарии подсчёта, агрегации и формирования статистики по файлам и журналам.
Глава 9. Ввод, вывод и параметры сценария
• Вывод информации: echo, printf.
• Чтение пользовательского ввода: read.
• Чтение данных из файлов и конвейеров.
• Передача аргументов в сценарий.
• Проверка количества и корректности аргументов.
• Завершение сценария: exit.
• Использование кодов возврата для сигнализации об ошибках.
• Формирование сообщений об ошибках в stderr.
Лабораторная работа 3. Создание сценария инвентаризации файлов с проверкой входных параметров и журналированием.
День 4. Логика, циклы и функции
Глава 10. Условия и проверки
• Команды test и [ ... ].
• Проверка строк, чисел, файлов и каталогов.
• Проверка прав доступа и типов файлов: -e, -f, -d, -r, -w, -x.
• Числовые сравнения: -eq, -ne, -gt, -lt, -ge, -le.
• Строковые сравнения и проверка пустого значения.
• Конструкции if, elif, else.
• Краткие формы условий с && и ||.
• Множественный выбор с case.
Упражнение: сценарий контроля свободного места на файловых системах с предупреждениями.
Глава 11. Циклы и обработка наборов данных
• Цикл for.
• Циклы while и until.
• Чтение файлов построчно.
• Обход результатов команд и файловых списков.
• Команды break и continue.
• Предотвращение ошибок при обработке файлов с пробелами и переводами строк в именах.
• Организация пакетных операций: копирование, переименование, архивирование, очистка.
• Работа с массивами и ассоциативными массивами
Практическая работа: массовая обработка файлов и создание сценария ротации архивов.
Глава 12. Функции и повторное использование кода
• Объявление и вызов функций.
• Аргументы функций и область видимости данных.
• Локальные переменные.
• Возврат статуса из функции: return.
• Разделение сценария на функции: проверка параметров, журналирование, вывод справки, очистка.
• Библиотеки функций и подключение внешних файлов.
• Разработка повторно используемых административных функций.
Лабораторная работа 4. Разработка модульного сценария резервного копирования с проверками и ведением журнала.
День 5. Надёжные административные сценарии
Глава 13. Параметры и интерфейс командной строки
• Соглашения об интерфейсе CLI-утилит.
• Обработка параметров с getopts.
• Короткие опции, опции со значениями и обязательные аргументы.
• Реализация ключей -h, -v, -f, -o и аналогичных.
• Вывод справки и диагностических сообщений.
• Обработка некорректного ввода.
• Команда shift и последовательная обработка аргументов.
Упражнение: создание сценария с параметрами командной строки для архивирования выбранных каталогов.
Глава 14. Обработка ошибок и отладка
• Принципы надёжного Bash-кода.
• Коды завершения команд и сценариев.
• Проверка успешности выполнения критичных операций.
• Режимы set -x, set -e, set -u, set -o pipefail.
• Трассировка выполнения и поиск ошибок.
• Диагностический вывод и журналирование.
• Временные файлы и безопасная очистка.
• Работа с сигналами и trap.
• Обработка SIGINT, SIGTERM и штатное завершение сценария.
Практическая работа: отладка сценария с ошибками обработки параметров, путей и кодов возврата.
Глава 15. Интерактивные сценарии и итоговая работа
• Простые меню с select.
• Организация диалога с пользователем.
• Утилита dialog: сообщения, подтверждения, поля ввода и меню.
• Автоматизация типовых задач администратора.
• Разбор распространённых антипаттернов Bash.
• Когда Bash подходит для задачи, а когда следует использовать Python, Perl или другой язык.
• Подготовка сценариев к эксплуатации: документация, права доступа, конфигурация и тестирование.
Лабораторная работа 5. Итоговая. Разработка Bash-утилиты для сопровождения Linux-системы: обработка аргументов, проверка прав, сбор системной информации, анализ журнала, формирование отчёта, журналирование, обработка ошибок и очистка временных данных.
Практическая часть
Программа предполагает не менее 15 практических работ и 5 лабораторных работ. В рамках занятий слушатели создают набор самостоятельных Bash-сценариев, в том числе:
• Сценарий безопасного массового переименования файлов.
• Сценарий контроля заполнения файловых систем.
• Сценарий поиска и анализа событий в системных журналах.
• Сценарий резервного копирования с ротацией архивов.
• Сценарий формирования отчёта о состоянии Linux-системы.
• Сценарий с параметрами командной строки, справкой и обработкой ошибок.
• Интерактивную административную утилиту с меню.
Используемая среда
• Linux: Debian/Ubuntu, Red Hat Enterprise Linux-совместимые дистрибутивы или другие современные дистрибутивы. Как правило для курса используется современная версия Ubuntu Linux
• Bash 5.x
• Стандартный набор GNU/Linux-утилит: coreutils, findutils, grep, sed, gawk, util-linux.
• Редактор vim, nano или Visual Studio Code с удалённым подключением к Linux.
• При необходимости: shellcheck для статического анализа сценариев.