Полезные фичи
Автоматизация повседневных задач снижает рутину и ошибки: один раз описали сценарий — дальше он выполняется одинаково на любой машине команды. Ниже — проверенные приёмы: от mkdir и шаблонов проектов до хуков Git и фоновых сервисов.
1. Генерация файлов и структур проектов
Быстрое создание дерева каталогов:
mkdir -p src/{controllers,models,views} && touch src/main.py README.md .gitignore
cookiecutter — шаблоны на Jinja2:
pip install cookiecutter
cookiecutter https://github.com/audreyr/cookiecutter-pypackage
Yeoman (yo) — экосистема генераторов для веба. Нативные генераторы: cargo new, dotnet new, npx create-react-app.
2. Пакетные операции с файлами
# 10 пустых файлов
for i in {1..10}; do touch "test_$i.txt"; done
# переименование расширений
for f in *.JPG; do mv "$f" "${f%.JPG}.jpg"; done
# удаление по маске
find . -type f -name "*.tmp" -delete
# сжатие списка
ls *.log | xargs gzip
3. Шаблонизация конфигураций
envsubst — подстановка переменных окружения:
export DB_HOST=localhost
echo 'host=$DB_HOST' | envsubst > config.txt
j2cli — рендер Jinja2 из YAML/JSON:
pip install j2cli
j2 config.j2 variables.yml > config.out
4. Автоматизация через Make и just
Makefile — «команды проекта» с зависимостями:
.PHONY: clean setup run
setup:
python -m venv venv
venv/bin/pip install -r requirements.txt
run: setup
venv/bin/python app.py
clean:
rm -rf __pycache__ *.pyc venv
just — современная альтернатива с простым justfile (cargo install just / brew install just).
5. Windows: PowerShell и AutoHotkey
1..5 | ForEach-Object { New-Item "file_$_.txt" -ItemType File }
AutoHotkey — макросы и автоматизация GUI на Windows.
6. Инструменты рабочего места
| Утилита | Зачем |
|---|---|
| fzf + fd | Интерактивный поиск файлов и быстрый запуск |
| direnv | .envrc в каталоге — переменные при cd |
| zoxide | Прыжок в частые директории: z project |
Пример:
fd . py | fzf | xargs vim
eval "$(direnv hook bash)"
7. Скрипты на Python
from pathlib import Path
root = Path('project')
(root / 'src').mkdir(parents=True, exist_ok=True)
(root / 'README.md').touch()
pathlib надёжнее конкатенации строк путей на разных ОС.
8. Git Hooks и pre-commit
Локальный hook .git/hooks/pre-commit:
#!/bin/sh
black --check . || { echo "Запустите black"; exit 1; }
Удобнее фреймворк pre-commit — единый .pre-commit-config.yaml для всей команды:
repos:
- repo: https://github.com/psf/black
rev: 24.4.2
hooks:
- id: black
pre-commit install — и проверки запускаются перед каждым коммитом.
9. Запуск по изменению файлов
entr — перезапуск при сохранении:
find . -name "*.py" | entr python -m pytest
watchexec — кроссплатформенный watch:
watchexec -e py "python app.py"
10. Системные сервисы (демоны)
Linux — unit systemd:
[Service]
ExecStart=/usr/bin/python3 /opt/myscript.py
Restart=always
sudo systemctl enable --now myscript.service
macOS — LaunchAgent (см. Планировщики). Планировщик ОС — когда нужен не watch, а строгое расписание.
Как выбрать уровень автоматизации
| Задача | Инструмент |
|---|---|
| Разовая операция с файлами | shell, Python |
| Повторяемые команды в репо | Make / just / npm scripts |
| Качество перед коммитом | pre-commit |
| Перезапуск при правках | entr / watchexec |
| Ночной бэкап | cron / systemd timer / Task Scheduler |
:::tip С чего начать
Оформите в Makefile три цели: setup, test, run. Добавьте pre-commit с форматтером. Остальное подключайте по мере роста проекта.
:::
См. также
Другие статьи этого же раздела в боковом меню (как на странице «О разделе»). Планировщики задач ОС и оркестраторы: cron, systemd timers, Task Scheduler, launchd и смежные инструменты для запуска скриптов по расписанию. Редакторы, сравнение, архивы, поиск, шифрование и мониторинг файлов — инструменты для ежедневной автоматизации файловых операций.Планировщики
Работа с файлами