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
  • AI для кодаНовое
  • О нас
    • Отзывы
    • Реферальная программа
    • О компании
    • Контакты
  • Иконка открытия меню
    • Сообщество
    • PurpleПлюс
    • AI тренажёр
    • Проекты
PurpleSchool — платформа бесплатных roadmap и курсов для разработчиков
ютуб иконка
Telegram иконка
VK иконка
VK иконка
Курсы
ГлавнаяКаталог курсовFrontendBackendFullstack
Практика
КарьераПроектыPurpleПлюс
Материалы
БлогБаза знаний
Документы
Договор офертаПолитика конфиденциальностиПроверка сертификатаМиграция курсовРеферальная программа
Реквизиты
ИП Ларичев Антон АндреевичИНН 773373765379contact@purpleschool.ru

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

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

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

    Комментарии

    0

    Постройте личный план изучения React state менеджер Zustand до уровня Middle — бесплатно!

    React state менеджер Zustand — часть карты развития Frontend

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

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

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

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

    Vue 3 и Pinia

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

    Next.js - с нуля

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

    Feature-Sliced Design

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

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

    Картинка поста Как AI меняет code review: инструменты и практики для команды
    Иконка аватараАнтон
    Иконка календаря18 апреля 2026
    aidevopstestingmiddleИконка уровня middle

    Как AI меняет code review: инструменты и практики для команды

    AI code review в 2026 году сокращает время проверки кода на 40-60%. Разбираем лучшие инструменты — CodeRabbit, PR-Agent, Claude Code Review — и пошаговый план внедрения в команде.

    Иконка чипа0
    Иконка глаза486
    Иконка комментариев0
    Картинка поста Next.js для начинающих: роутинг, данные и первый деплой
    Иконка аватараАнтон
    Иконка календаря22 мая 2026
    Next.jsReactSSR+ 2juniorИконка уровня junior

    Next.js для начинающих: роутинг, данные и первый деплой

    Next.js для начинающих: разбираем файловый роутинг App Router, загрузку данных в серверных компонентах и первый деплой на Vercel за минуту.

    Иконка чипа0
    Иконка глаза33
    Иконка комментариев0
    Картинка поста Деплой Node.js на VPS за 30 минут: пошаговое руководство
    Иконка аватараАнтон
    Иконка календаря21 мая 2026
    Node.jsVPSDevOps+ 3middleИконка уровня middle

    Деплой Node.js на VPS за 30 минут: пошаговое руководство

    Деплой Node.js на VPS за 30 минут: настройка сервера, PM2, Nginx и SSL. Пошаговая инструкция от подключения по SSH до запуска приложения в продакшене.

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