Полезные фичи
Автоматизация повседневных задач — ключ к повышению продуктивности разработчика и системного администратора. Ниже собраны проверенные методы, инструменты и шаблоны, позволяющие автоматизировать операции с файлами, проектами, окружениями и рабочими процессами.
1. Генерация файлов и структур проектов
a. touch / mkdir -p (Unix/Linux/macOS)
- Назначение: быстрое создание файлов и вложенных директорий.
- Пример:
mkdir -p src/{controllers,models,views} && touch src/main.py README.md .gitignore
b. printf + шаблоны
- Пример (создание
.gitignore):printf "node_modules/\n.env\n*.log\n" > .gitignore
c. cookiecutter (Python, кроссплатформенный)
- Описание: генератор проектов на основе шаблонов (Jinja2).
- Установка:
pip install cookiecutter - Использование:
cookiecutter https://github.com/audreyr/cookiecutter-pypackage.git - Репозитории шаблонов: https://github.com/cookiecutter/cookiecutter
d. yeoman (Node.js)
- Описание: инструмент генерации проектов (веб, мобильные приложения и др.).
- Установка:
npm install -g yo - Пример:
npm install -g generator-webapp
yo webapp - Сайт: https://yeoman.io
e. cargo new / dotnet new / create-react-app
- Стандартные генераторы в экосистемах:
- Rust:
cargo new my_project - .NET:
dotnet new console -o MyApp - React:
npx create-react-app my-app
- Rust:
2. Пакетные операции с файлами
a. Циклы в Bash/Zsh
- Пример (создать 10 файлов):
for i in {1..10}; do touch "test_$i.txt"; done - Переименование по шаблону:
for f in *.JPG; do mv "$f" "${f%.JPG}.jpg"; done
b. find + -exec
- Пример (удалить все
.tmp):find . -type f -name "*.tmp" -delete
c. xargs
- Пример (обработать список файлов):
ls *.log | xargs gzip
3. Шаблонизация конфигураций
a. envsubst (входит в gettext)
- Описание: подстановка переменных окружения в текстовые файлы.
- Пример:
export DB_HOST=localhost
echo 'host=$DB_HOST' | envsubst > config.txt
b. j2cli — CLI для Jinja2
- Установка:
pip install j2cli - Пример:
j2 config.j2 variables.yml > config.out
4. Автоматизация через Make
a. Makefile для повседневных задач
- Пример:
.PHONY: clean setup run
setup:
python -m venv venv
venv/bin/pip install -r requirements.txt
run:
venv/bin/python app.py
clean:
rm -rf __pycache__ *.pyc venv - Запуск:
make setup,make run
b. just — современная замена Make (Rust-based)
- Установка:
cargo install just
# или
brew install just - Файл
justfile:setup:
python -m venv venv
./venv/bin/pip install -r requirements.txt
run: setup
./venv/bin/python app.py
5. Автоматизация в Windows (PowerShell / Batch)
a. Создание файлов через PowerShell
1..5 | ForEach-Object { New-Item "file_$_.txt" -ItemType File }
b. Автоматизация через .bat
@echo off
mkdir project\src
type nul > project\src\main.py
echo print("Hello") > project\src\main.py
c. AutoHotkey — макросы и автоматизация GUI
6. Инструменты для автоматизации рабочего места
a. fzf + fd — интерактивный поиск и выполнение
- Пример (быстрый запуск файла):
fd . py | fzf | xargs vim
b. direnv — автоматическая загрузка переменных окружения
- Установка:
sudo apt install direnv
echo 'eval "$(direnv hook bash)"' >> ~/.bashrc - Использование: создаёте
.envrcв проекте — переменные загружаются при входе в папку.
c. z / zoxide — умный переход по директориям
- Установка:
cargo install zoxide
eval "$(zoxide init bash)" - Использование:
z project→ переходит в недавно использованную папку с именемproject.
7. Автоматизация через скрипты на Python
a. Генерация файлов из шаблонов
import os
dirs = ['src', 'tests', 'docs']
files = ['README.md', 'requirements.txt', 'src/__init__.py']
for d in dirs:
os.makedirs(d, exist_ok=True)
for f in files:
if not os.path.exists(f):
with open(f, 'w') as fp:
fp.write('')
b. pathlib для надёжной работы с путями
from pathlib import Path
(Path('project') / 'src').mkdir(parents=True, exist_ok=True)
(Path('project') / 'README.md').touch()
8. Автоматизация через Git Hooks
a. Пример pre-commit (проверка форматирования)
Создайте .git/hooks/pre-commit:
#!/bin/sh
black --check .
if [ $? -ne 0 ]; then
echo "Запустите black перед коммитом"
exit 1
fi
Не забудьте сделать исполняемым: chmod +x .git/hooks/pre-commit
b. pre-commit фреймворк
- Установка:
pip install pre-commit - Конфиг
.pre-commit-config.yaml:repos:
- repo: https://github.com/psf/black
rev: 24.4.2
hooks:
- id: black - Активация:
pre-commit install
9. Запуск задач по событиям
a. entr — выполнение команды при изменении файлов
- Установка:
sudo apt install entr - Пример (перезапуск тестов):
find . -name "*.py" | entr python -m pytest
b. watchexec (кроссплатформенный аналог)
- Установка:
cargo install watchexec-cli - Пример:
watchexec -e py "python app.py"
10. Автоматизация через системные сервисы
a. Скрипт как systemd-сервис (Linux)
Создайте /etc/systemd/system/myscript.service:
[Unit]
Description=My Automation Script
[Service]
ExecStart=/usr/bin/python3 /opt/myscript.py
Restart=always
User=timur
[Install]
WantedBy=multi-user.target
Активируйте:
sudo systemctl enable --now myscript.service
b. LaunchAgent (macOS)
См. главу «Планировщики» — аналогично, но для пользовательских задач.