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

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

  • Курсы
    • FrontendИконка стрелки
    • AI разработкаИконка стрелки
    • BackendИконка стрелки
    • DevOpsИконка стрелки
    • MobileИконка стрелки
    • ТестированиеИконка стрелки
    • Soft-skillsИконка стрелки
    • ДизайнИконка стрелки
    Иконка слояПерейти в каталог курсов
  • Бесплатно
    • Курсы
    • JavaScript Основы разработкиPython Основы PythonCSS CSS FlexboxКарта развитияВопросы для собеседований
    • База знанийИконка стрелки
    • Новостные рассылкиИконка стрелки
  • PurpleSchool — курсы программирования онлайн
    • AI для кодаНовое
    • Сообщество
    • PurpleПлюс
    • AI Собеседование
    • 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 — и рутинные задачи перестанут отнимать ваше время.

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

    Комментарии

    0

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

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

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

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

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

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

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

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

    Angular

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

    Feature-Sliced Design

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

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

    Картинка поста Docker для разработчиков: с чего начать и как применять
    Иконка аватараАнтон
    Иконка календаря21 июля 2026
    dockerdevopsконтейнеры+ 3juniorИконка уровня junior

    Docker для разработчиков: с чего начать и как применять

    Docker — инструмент контейнеризации, который решает проблему «у меня работает». Установка, первый контейнер, Dockerfile и docker-compose с нуля.

    Иконка чипа+1
    Иконка глаза1 064
    Иконка комментариев0
    Картинка поста Kubernetes простыми словами: первые шаги для разработчика
    Иконка аватараАнтон
    Иконка календаря04 июля 2026
    kubernetesdevopsdocker+ 3juniorИконка уровня junior

    Kubernetes простыми словами: первые шаги для разработчика

    Kubernetes — система оркестрации контейнеров, которая автоматизирует деплой и масштабирование приложений. Разбираем ключевые концепции на практических примерах.

    Иконка чипа0
    Иконка глаза580
    Иконка комментариев0
    Картинка поста PostgreSQL vs MySQL: что выбрать для проекта
    Иконка аватараАнтон
    Иконка календаря13 августа 2026
    PostgreSQLMySQLбазы данных+ 3middleИконка уровня middle

    PostgreSQL vs MySQL: что выбрать для проекта

    PostgreSQL vs MySQL — сравниваем архитектуру, производительность, типы данных и транзакции, чтобы выбрать подходящую БД для вашего проекта.

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