Роман Лобигер
![Картинка поста [ready to use] 3 bash-скрипта для разработчика](/_next/image?url=https%3A%2F%2Fcdn-bucket.hb.bizmrg.com%2Fpurple-images%2Fprofile-images%2F84984b88-6c75-479b-bff9-9b469444dc03.png&w=3840&q=75)
На этой неделе планируем выпустить курс по Bash и чтобы лучше познакомить вас с темой — расскажу более детально как эти скрипты применимы для разработчика. Ранее уже выпускал видео с основами. Оно поможет понять общую логику, написать базовые модули, познакомиться с синтаксисом. В этом же тексте пойдем дальше, поделюсь 3 более практически применимыми автоматизациями, которые можно копировать и вставлять в проекты.
⠀
1. Автоматизация git-коммитов и пуша
Этот скрипт проверяет, есть ли изменения в репозитории (с помощью git status --porcelain), и если они есть, автоматически выполняет git add ., делает коммит с сообщением (либо переданным параметром, либо с отметкой времени) и пушит изменения на удалённый сервер. Можно расширить скрипт и принимать описание фичи, тип - баг или фича и формировать текст согласно соглашению о коммитах.
Шаблон:
#!/bin/bash
# Проверяем, является ли текущая директория Git-репозиторием
if [ ! -d .git ]; then
echo "Ошибка: Данный каталог не является git-репозиторием."
exit 1
fi
# Проверяем наличие изменений
if [ -z "$(git status --porcelain)" ]; then
echo "Нет изменений для коммита."
exit 0
fi
# Добавляем все изменения в индекс
git add . || { echo "Ошибка при выполнении git add"; exit 1; }
# Формируем сообщение коммита
MESSAGE=${1:-"Auto-commit on $(date)"}
# Создаем коммит
git commit -m "$MESSAGE" || { echo "Ошибка при выполнении git commit"; exit 1; }
# Отправляем изменения в удалённый репозиторий
git push || { echo "Ошибка при выполнении git push"; exit 1; }
echo "Изменения успешно отправлены."
⠀
2. Автоматический бэкап проекта
Скрипт архивирует текущую директорию запуска, добавляя к имени файла отметку времени. Архив размещается на уровне выше текущий папки. Идеален для регулярного резервного копирования как на локальных машинах, так и на серверах. Директорию можно передать как аргумент.
Шаблон:
#!/bin/bash
# Если передан аргумент, используем его как директорию проекта, иначе используем текущую директорию
PROJECT_DIR="${1:-$(pwd)}"
# Указываем директорию для сохранения архива (на уровень выше текущей директории)
BACKUP_DIR="$(dirname "$PROJECT_DIR")/backups"
# Создаем директорию для бэкапов, если она не существует
mkdir -p "$BACKUP_DIR"
# Создаем метку времени для уникального имени файла
DATE=$(date +"%Y-%m-%d_%H-%M-%S")
# Формируем имя файла архива с учетом метки времени
BACKUP_FILE="$BACKUP_DIR/backup_$DATE.tar.gz"
# Создаем сжатый архив (tar.gz) указанной директории
tar --exclude="$BACKUP_DIR" -czf "$BACKUP_FILE" "$PROJECT_DIR"
echo "Бэкап проекта создан: $BACKUP_FILE"
⠀
3. Массовый поиск и замена текста
Здесь с помощью find и sed происходит рекурсивный поиск файлов в указанной директории и замена заданного текста на новый. Это отличный скрипт для массового рефакторинга, корректировки конфигураций или очистки кода, когда вручную менять каждое вхождение просто невозможно.
Шаблон:
#!/bin/bash
# Проверяем, что переданы три аргумента: директория, искомый текст и текст замены
if [ "$#" -ne 3 ]; then
echo "Использование: $0 <директория> <искомый_текст> <заменяемый_текст>"
exit 1
fi
# Присваиваем переменным значения аргументов
DIRECTORY=$1
SEARCH_TEXT=$2
REPLACE_TEXT=$3
# Ищем все файлы в указанной директории и выполняем замену текста с помощью sed
find "$DIRECTORY" -type f -exec sed -i "s/$SEARCH_TEXT/$REPLACE_TEXT/g" {} +
echo "Замена завершена."
⠀
Мой пример
Основная задача таких скриптов — минимизация повторяющихся действий, которые отнимают время. У меня самого есть около десяти небольших скриптов, которые автоматизируют рутинные задачи:
• Массовое сжатие видео
• Бэкап курсов
• Конвертация изображений
• Бэкап и восстановление данных PostgreSQL локально для тестирования
• Быстрый поиск больших видеофайлов, которые занимают место
• Очистка node_modules в проектах, над которыми давно не работал
⠀
С чего начать
В целом, чтобы уже сегодня поставить на службу первые скрипты — достаточно посмотреть видео по основам и скопировать скрипты из этого поста как шаблон, доработать их под себя.
🔥 Если готовы внедрять — от меня бонусная поддержка.
Появятся вопросы — пишите в комментариях под этим постом в телеграме, по основным моментам буду отвечать, помогать сегодня и завтра.
Карта развития разработчика
Получите полную карту развития разработчика по всем направлениям: frontend, backend, devops, mobile
12.03.2025
Комментарии
1