PurpleSchool — курсы программирования онлайн
  • Бесплатно
    • Курсы
    • JavaScript Основы разработкиPython Основы PythonCSS CSS FlexboxКарта развития
    • База знанийИконка стрелки
    • Новостные рассылкиИконка стрелки
  • Карьерные пути
    • Frontend React разработчик
    • Frontend Vue разработчик
    • Backend разработчик Node.js
    • Fullstack разработчик React / Node.js
    • Mobile разработчик React Native
    • Backend разработчик Golang
    • Devops инженер
    • Backend разработчик Python
  • О нас
    • Отзывы
    • Реферальная программа
    • О компании
    • Контакты
  • Иконка открытия меню
    • Сообщество
    • PurpleПлюс
    • AI тренажёр
    • Проекты
PurpleSchool — платформа бесплатных roadmap и курсов для разработчиков
ютуб иконка
Telegram иконка
VK иконка
VK иконка
Курсы
ГлавнаяКаталог курсовFrontendBackendFullstack
Практика
КарьераПроектыPurpleПлюс
Материалы
БлогБаза знаний
Документы
Договор офертаПолитика конфиденциальностиПроверка сертификатаМиграция курсовРеферальная программа
Реквизиты
ИП Ларичев Антон АндреевичИНН 773373765379contact@purpleschool.ru

PurpleSchool © 2020 -2026 Все права защищены

  • Курсы
    • FrontendИконка стрелки
    • AI разработкаИконка стрелки
    • BackendИконка стрелки
    • DevOpsИконка стрелки
    • MobileИконка стрелки
    • ТестированиеИконка стрелки
    • Soft-skillsИконка стрелки
    • ДизайнИконка стрелки
    Иконка слояПерейти в каталог курсов
  • PurpleSchool — курсы программирования онлайн
    • Сообщество
    • PurpleПлюс
    • AI тренажёр
    • Проекты
    Главная
    Сообщество
    10 Bash-скриптов, которые автоматизируют рутину разработчика

    10 Bash-скриптов, которые автоматизируют рутину разработчика

    Аватар автора 10 Bash-скриптов, которые автоматизируют рутину разработчика

    Антон Ларичев

    Иконка календаря07 апреля 2026
    bashlinuxdevopsmiddleИконка уровня middle
    Картинка поста 10 Bash-скриптов, которые автоматизируют рутину разработчика

    Введение

    Bash-скрипты для автоматизации рутины — один из самых эффективных способов сэкономить время разработчика. Каждый день мы выполняем десятки повторяющихся действий: проверяем логи, делаем бэкапы, деплоим код, чистим временные файлы. Всё это можно автоматизировать с помощью простых bash-скриптов.

    В этой статье собраны 10 готовых скриптов для автоматизации рутинных задач, которые можно сразу использовать в своих проектах. Каждый скрипт снабжён комментариями и легко адаптируется под конкретные нужды.

    Скрипт для быстрого бэкапа проекта

    Резервное копирование проекта — задача, которую легко забыть. Этот bash-скрипт создаёт архив с датой в имени файла и удаляет старые бэкапы.

    #!/bin/bash
    # Бэкап проекта с ротацией старых копий
    PROJECT_DIR="$1"
    BACKUP_DIR="$HOME/backups"
    DATE=$(date +%Y-%m-%d_%H-%M)
    NAME=$(basename "$PROJECT_DIR")
    
    mkdir -p "$BACKUP_DIR"
    tar -czf "$BACKUP_DIR/${NAME}_${DATE}.tar.gz" -C "$(dirname "$PROJECT_DIR")" "$NAME"
    
    # Удаляем бэкапы старше 30 дней
    find "$BACKUP_DIR" -name "${NAME}_*.tar.gz" -mtime +30 -delete
    echo "Бэкап создан: ${NAME}_${DATE}.tar.gz"
    

    Запуск: ./backup.sh /path/to/project. Добавьте в cron для ежедневного выполнения.

    Автоматизация Git: создание ветки и коммита

    При работе с Git часто нужно создать ветку по номеру задачи, сделать коммит и запушить. Скрипт автоматизирует этот процесс.

    #!/bin/bash
    # Быстрое создание ветки по номеру задачи
    TASK_ID="$1"
    DESCRIPTION="$2"
    
    if [ -z "$TASK_ID" ] || [ -z "$DESCRIPTION" ]; then
      echo "Использование: ./gitflow.sh TASK-123 \"описание задачи\""
      exit 1
    fi
    
    BRANCH="feature/${TASK_ID}-$(echo "$DESCRIPTION" | tr ' ' '-' | tr '[:upper:]' '[:lower:]')"
    git checkout -b "$BRANCH"
    echo "Создана ветка: $BRANCH"
    

    Как автоматизировать коммиты в Git с помощью Bash

    Можно расширить скрипт, добавив автоматический коммит всех изменений:

    #!/bin/bash
    # Коммит с автоформатированием сообщения
    TYPE="${1:-fix}"  # fix, feat, refactor, docs
    MESSAGE="$2"
    
    if [ -z "$MESSAGE" ]; then
      echo "Использование: ./commit.sh feat \"добавлена авторизация\""
      exit 1
    fi
    
    git add -A
    git commit -m "${TYPE}: ${MESSAGE}"
    echo "Коммит создан: ${TYPE}: ${MESSAGE}"
    

    Скрипт очистки логов и временных файлов

    Логи и временные файлы могут занимать гигабайты дискового пространства. Этот скрипт находит и удаляет устаревшие файлы.

    #!/bin/bash
    # Очистка логов старше N дней
    LOG_DIRS=("/var/log/app" "$HOME/projects/*/logs")
    DAYS=${1:-7}
    TOTAL=0
    
    for DIR in ${LOG_DIRS[@]}; do
      for PATTERN in "*.log" "*.tmp" "*.cache"; do
        COUNT=$(find $DIR -name "$PATTERN" -mtime +$DAYS 2>/dev/null | wc -l)
        TOTAL=$((TOTAL + COUNT))
        find $DIR -name "$PATTERN" -mtime +$DAYS -delete 2>/dev/null
      done
    done
    
    echo "Удалено файлов: $TOTAL (старше $DAYS дней)"
    

    Мониторинг состояния сервера

    Простой скрипт для проверки загрузки CPU, памяти и диска. Отправляет уведомление, если ресурсы на исходе.

    #!/bin/bash
    # Мониторинг ресурсов сервера
    DISK_THRESHOLD=90
    MEM_THRESHOLD=85
    
    DISK_USAGE=$(df / | tail -1 | awk '{print $5}' | tr -d '%')
    MEM_USAGE=$(free | awk '/Mem:/ {printf "%.0f", $3/$2*100}')
    
    ALERT=""
    [ "$DISK_USAGE" -gt "$DISK_THRESHOLD" ] && ALERT+="Диск: ${DISK_USAGE}%\n"
    [ "$MEM_USAGE" -gt "$MEM_THRESHOLD" ] && ALERT+="Память: ${MEM_USAGE}%\n"
    
    if [ -n "$ALERT" ]; then
      echo -e "ВНИМАНИЕ!\n$ALERT" | mail -s "Сервер: ресурсы" admin@example.com
    fi
    

    Bash-скрипт для автоматического деплоя

    Деплой через SSH с проверкой статуса — одна из самых частых задач автоматизации.

    #!/bin/bash
    # Деплой приложения на удалённый сервер
    SERVER="user@production-server"
    APP_DIR="/var/www/app"
    BRANCH="${1:-main}"
    
    echo "Деплой ветки $BRANCH..."
    ssh "$SERVER" << EOF
      cd $APP_DIR
      git fetch origin
      git checkout $BRANCH
      git pull origin $BRANCH
      npm install --production
      pm2 restart app
    EOF
    
    [ $? -eq 0 ] && echo "Деплой завершён" || echo "ОШИБКА деплоя!"
    

    Скрипт для проверки доступности сервисов

    Мониторинг доступности ваших сервисов с записью результатов в лог.

    #!/bin/bash
    # Проверка доступности URL-адресов
    URLS=("https://api.example.com/health" "https://app.example.com" "https://cdn.example.com")
    LOG="/var/log/health-check.log"
    
    for URL in "${URLS[@]}"; do
      STATUS=$(curl -s -o /dev/null -w "%{http_code}" --max-time 10 "$URL")
      TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S')
      if [ "$STATUS" -ne 200 ]; then
        echo "[$TIMESTAMP] FAIL $URL (HTTP $STATUS)" >> "$LOG"
      fi
    done
    

    Автоматическая настройка окружения разработчика

    При подключении нового разработчика к проекту нужно установить зависимости, настроить переменные окружения и запустить миграции.

    #!/bin/bash
    # Инициализация dev-окружения проекта
    echo "Настройка окружения..."
    
    # Копируем шаблон переменных окружения
    [ ! -f .env ] && cp .env.example .env && echo ".env создан из шаблона"
    
    # Устанавливаем зависимости
    npm install
    
    # Запускаем миграции БД
    npm run migration:run
    
    # Генерируем типы
    npm run generate
    
    echo "Окружение готово! Запуск: npm run dev"
    

    Скрипт массового поиска и замены в проекте

    Когда нужно переименовать переменную, URL или путь во всём проекте, grep и sed справятся за секунды.

    #!/bin/bash
    # Поиск и замена строки во всех файлах проекта
    OLD_STRING="$1"
    NEW_STRING="$2"
    DIR="${3:-.}"
    
    if [ -z "$OLD_STRING" ] || [ -z "$NEW_STRING" ]; then
      echo "Использование: ./replace.sh \"старый текст\" \"новый текст\" [директория]"
      exit 1
    fi
    
    COUNT=$(grep -rl "$OLD_STRING" "$DIR" --include='*.ts' --include='*.js' --include='*.json' | wc -l)
    grep -rl "$OLD_STRING" "$DIR" --include='*.ts' --include='*.js' --include='*.json' | \
      xargs sed -i "s|$OLD_STRING|$NEW_STRING|g"
    
    echo "Заменено в $COUNT файлах: '$OLD_STRING' -> '$NEW_STRING'"
    

    Docker: очистка неиспользуемых ресурсов

    Docker быстро накапливает неиспользуемые образы, контейнеры и тома. Скрипт автоматизирует очистку.

    #!/bin/bash
    # Очистка Docker-ресурсов
    echo "Остановка завершённых контейнеров..."
    docker container prune -f
    
    echo "Удаление неиспользуемых образов..."
    docker image prune -a -f --filter "until=168h"
    
    echo "Очистка неиспользуемых томов..."
    docker volume prune -f
    
    echo "Очистка сети..."
    docker network prune -f
    
    # Показываем освобождённое место
    docker system df
    

    Скрипт генерации отчёта по проекту

    Полезный скрипт, который собирает статистику по проекту: количество файлов, строк кода, последние коммиты.

    #!/bin/bash
    # Генерация отчёта по проекту
    PROJECT="${1:-.}"
    echo "=== Отчёт по проекту: $(basename $(realpath $PROJECT)) ==="
    echo "Дата: $(date '+%Y-%m-%d %H:%M')"
    echo ""
    
    # Количество файлов по типам
    echo "Файлы по типам:"
    for EXT in ts js tsx jsx json css; do
      COUNT=$(find "$PROJECT" -name "*.$EXT" -not -path '*/node_modules/*' | wc -l)
      [ "$COUNT" -gt 0 ] && echo "  .$EXT: $COUNT"
    done
    
    # Общее количество строк кода
    LINES=$(find "$PROJECT" -name '*.ts' -o -name '*.js' | \
      grep -v node_modules | xargs wc -l 2>/dev/null | tail -1 | awk '{print $1}')
    echo "\nСтрок кода (TS/JS): $LINES"
    
    # Последние 5 коммитов
    echo "\nПоследние коммиты:"
    git -C "$PROJECT" log --oneline -5 2>/dev/null || echo "  (не git-репозиторий)"
    

    Частые ошибки при написании Bash-скриптов

    При автоматизации рутины с помощью bash-скриптов разработчики часто допускают типичные ошибки:

    • Отсутствие кавычек вокруг переменных — приводит к проблемам с пробелами в путях. Всегда используйте "$VAR" вместо $VAR
    • Забытый set -e — без него скрипт продолжит выполнение после ошибки. Добавляйте set -euo pipefail в начало скрипта
    • Жёстко заданные пути — используйте переменные и параметры вместо абсолютных путей
    • Отсутствие проверки входных параметров — всегда проверяйте, что обязательные аргументы переданы

    Заключение

    Bash-скрипты для автоматизации рутины экономят разработчику часы работы каждую неделю. Мы разобрали 10 готовых скриптов: от бэкапов и деплоя до мониторинга и очистки Docker. Каждый из них можно использовать как есть или адаптировать под свой рабочий процесс. Начните с одного скрипта, добавьте его в cron — и рутинные задачи перестанут отнимать ваше время.

    Иконка глаза6

    Комментарии

    0

    Постройте личный план изучения Nuxt - fullstack Vue фреймворк до уровня Middle — бесплатно!

    Nuxt - fullstack Vue фреймворк — часть карты развития Frontend

    • step100+ шагов развития
    • lessons30 бесплатных лекций
    • lessons300 бонусных рублей на счет

    Бесплатные лекции

    Лучшие курсы по теме

    изображение курса

    Основы разработки

    Антон Ларичев
    Гарантия
    Бонусы
    иконка звёздочки рейтинга5.0
    бесплатно
    Подробнее
    изображение курса

    Angular 21

    Антон Ларичев
    AI-тренажерыAI-тренажеры
    Гарантия
    Бонусы
    иконка звёздочки рейтинга5.0
    3 999 ₽ 6 990 ₽
    Подробнее
    изображение курса

    Feature-Sliced Design

    Антон Ларичев
    AI-тренажерыAI-тренажеры
    Практика в студииПрактика в студии
    Гарантия
    Бонусы
    иконка звёздочки рейтинга4.5
    3 999 ₽ 6 990 ₽
    Подробнее

    Похожие статьи

    Картинка поста Helm-чарты для Kubernetes: пошаговый гайд по деплою
    Иконка аватараАнтон
    Иконка календаря06 апреля 2026
    kubernetesdevopshelmmiddleИконка уровня middle

    Helm-чарты для Kubernetes: пошаговый гайд по деплою

    Разбираем создание Helm chart для деплоя приложения в Kubernetes: структура чарта, шаблоны, values.yaml, команды helm install и upgrade с практическими примерами.

    Иконка чипа0
    Иконка глаза43
    Иконка комментариев0
    Картинка поста GitHub Actions: CI/CD пайплайн для Node.js проекта
    Иконка аватараАнтон
    Иконка календаря05 апреля 2026
    github-actionsnode.jsdevopsmiddleИконка уровня middle

    GitHub Actions: CI/CD пайплайн для Node.js проекта

    Настраиваем CI/CD пайплайн в GitHub Actions для Node.js: автоматический линтинг с ESLint, запуск тестов Jest, кэширование зависимостей и деплой на сервер через SSH.

    Иконка чипа0
    Иконка глаза86
    Иконка комментариев0
    Картинка поста Docker Compose для разработки: собираем окружение с базой, кешем и очередью за 10 минут
    Иконка аватараАнтон
    Иконка календаря04 апреля 2026
    dockerdevopsmiddleИконка уровня middle

    Docker Compose для разработки: собираем окружение с базой, кешем и очередью за 10 минут

    Docker Compose для разработки позволяет за 10 минут собрать полное окружение с PostgreSQL, Redis и RabbitMQ. Разбираем настройку сервисов, volumes, health checks и переменные окружения.

    Иконка чипа0
    Иконка глаза135
    Иконка комментариев0
    Иконка чипа0