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 — и рутинные задачи перестанут отнимать ваше время.

    Иконка глаза1 056

    Комментарии

    0

    Постройте личный план изучения Основы разработки до уровня Middle — бесплатно!

    Основы разработки — часть карты развития Frontend, Backend, Mobile

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

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

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

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

    Основы Git

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

    HTML и CSS

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

    CSS Flexbox

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

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

    Картинка поста Git флоу для команды разработчиков: гайд по веткам и релизам
    Иконка аватараАнтон
    Иконка календаря30 сентября 2026
    gitgit-flowкомандная работа+ 2middleИконка уровня middle

    Git флоу для команды разработчиков: гайд по веткам и релизам

    Git флоу для команды разработчиков: разбираем Git Flow, GitHub Flow и trunk-based development — как выбрать модель веток и избежать конфликтов при совместной работе.

    Иконка чипа0
    Иконка глаза223
    Иконка комментариев0
    Иконка аватараАнтон
    Иконка календаря01 октября 2026
    AI-инструментыDevOpsразработка+ 2middleИконка уровня middle

    Gemini CLI в России: как установить и настроить

    Установить Gemini CLI из России можно без VPN и без ухищрений — это обычный npm-пакет, он скачивается и запускается на любой машине. Упирается всё на следующем шаге: 18 июня 2026 года Google перестал обслуживать запросы Gemini CLI для бесплатных аккаунтов и подписчиков Google AI Pro и Ultra, а единственный оставшийся путь — вход по API-ключу — требует биллинга в регионе, где Россия не числится. Ниже разбираем, как агент ставится, как устроены три способа входа, почему ни один из них не доводи...

    Иконка чипа0
    Иконка глаза323
    Иконка комментариев0
    Иконка аватараАнтон
    Иконка календаря29 сентября 2026
    AI-инструментыClaude CodeDevOps+ 2middleИконка уровня middle

    Бесплатный аналог Cursor и Claude Code в России

    Короткий ответ: бесплатных аналогов много, и почти все они ставятся в России без ухищрений — Cline, Kilo Code, OpenCode, Qwen Code, Codex CLI распространяются с открытым исходным кодом, и за сам инструмент никто денег не берёт. Проблема в другом: своей модели у них нет. Платите вы не за агента, а за модель, к которой он ходит, и блокируется из России именно доступ к модели. Поэтому вопрос «чем заменить Cursor и Claude Code» почти всегда оказывается другим вопросом — где взять доступ к сильной модели без зарубежной карты. Ниже разберём, что из бесплатного реально работает, где оно упирается в потолок, и во сколько обходится не искать замену вообще. {{IMAGE_1}} alt: Схема: бесплатные клиенты-агенты Cline, Kilo Code, OpenCode, Qwen Code и платный доступ к модели за ними prompt: Flat vector diagram on dark background, two clearly separated zones. Left zone labeled "free" contains five small rounded cards representing code editor agents with terminal and sidebar icons. Right zone labeled "paid" contains a single large cloud icon representing an AI model, with a lock badge. Arrows go from all five cards to the single cloud. Purple and violet accent colors, thin white lines, no text labels, clean minimal tech illustration, 16:9

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