логотип PurpleSchool
логотип PurpleSchool

[ready to use] 3 bash-скрипта для разработчика

Картинка поста [ready to use] 3 bash-скрипта для разработчика

На этой неделе планируем выпустить курс по 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

Комментарии

1
Иконка аватара
Добавить кнопку копировать для примеров программ.)

Карта развития разработчика

Получите полную карту развития разработчика по всем направлениям: frontend, backend, devops, mobile