← Все этапы маршрута

Автоматизировать, а не переписывать вручную · 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

Материалы основного пути

  1. Основы Python — Яндекс Хендбук RU · Курс
    • Начать здесь. функции, коллекции, файлы, JSON, exceptions и modules
  2. GNU Bash Reference Manual EN · Документация
    • Обязательно. Shell Syntax, Pipelines, Redirections и Exit Status
  3. Exercism: Python EN · Тренажёр
    • Практика. 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 ставится в чистое окружение.

Дополнительные материалы