Автоматизировать, а не переписывать вручную · R5
R5. Bash и Python
Цель
Писать небольшие надёжные инструменты с понятным интерфейсом, логированием, тестами и корректными exit codes.
Что освоить
- pipes, redirects, quoting и exit status
- grep, sed, awk и jq
- Python functions, modules и venv
- files, JSON/YAML, HTTP API и exceptions
- logging, argparse, tests и idempotence
Материалы основного пути
- Основы Python — Яндекс Хендбук
- Начать здесь. функции, коллекции, файлы, JSON, exceptions и modules
- GNU Bash Reference Manual
- Обязательно. Shell Syntax, Pipelines, Redirections и Exit Status
- Exercism: Python
- Практика. 10 небольших задач с тестами и рефакторингом
Практика
CLI-проверка хоста с JSON output, health-check endpoints и ротация backup-файлов.
Проверьте результат
Скрипт безопасно запускается повторно, не содержит секретов, логирует действия и тестирует ключевую логику.
Вопросы, условия приёмки и доказательства
Ответьте и покажите
- Как quoting меняет shell expansion?
- Какие ошибки должны иметь разные exit codes?
Условия приёмки
- CLI идемпотентен
- JSON output стабилен
- ShellCheck/pytest и error paths проходят
Учебный отказ: Внешний endpoint timeout/500, файл отсутствует или JSON повреждён; инструмент завершается bounded и объяснимо.
Артефакт: Репозиторий CLI-инструмента + test/lint log + пример JSON output
Повторный запуск безопасен, exit codes различают успех/ошибку, секретов нет, error path тестируется, ShellCheck/pytest проходят.
Хорошее доказательство: Repo + help/output examples + CI test/lint run, включая negative tests.
Недостаточно: Happy-path script с catch-all exception, бесконечным retry или секретом в исходниках.
Углубление и справочные материалы
Темы для углубления
- property/error-path tests
- concurrency и timeouts
- packaging, typing и CI quality gates
Расширить CLI параллельными проверками, bounded timeout/retry, typed config и тестами отказов внешнего API.
Результат: Тесты покрывают happy/error paths, retry ограничен, output стабилен, package ставится в чистое окружение.
Дополнительные материалы
- The Python Tutorial
Справочник. главы 4, 7, 8, 10 и 12 по мере написания CLI
- Linux — администрирование — Bash
- ShellCheck
Дополнительно. устранить все findings в собственном Bash-скрипте
- Exercism: Bash
- pytest: Getting Started