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

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

  • Курсы
    Иконка слояПерейти в каталог курсов
    • FrontendИконка стрелки
    • BackendИконка стрелки
    • DevOpsИконка стрелки
    • MobileИконка стрелки
    • ТестированиеИконка стрелки
    • Soft-skillsИконка стрелки
    • ДизайнИконка стрелки
    • Картинка группы Общее

      Общее


      • Основы разработки
      • Основы Git
      • HTML и CSS
      • CSS Flexbox
      • Основы JavaScript
      • Продвинутый JavaScript
      • TypeScript с нуля
      • Neovim
    • Картинка группы React

      React


      • React и Redux Toolkit
      • Zustand
      • Next.js - с нуля
      • Feature-Sliced Design
    • Картинка группы Vue.js

      Vue.js


      • Vue 3 и Pinia
      • Nuxt
      • Feature-Sliced Design
    • Картинка группы Angular

      Angular


      • Angular 19 Иконка курсаСкоро!
    • Картинка группы Node.js

      Node.js


      • Основы Git
      • Основы JavaScript
      • Продвинутый JavaScript
      • Telegraf.js Иконка курсаСкоро!
      • TypeScript с нуля
      • Node.js с нуля
      • Nest.js с нуля
    • Картинка группы Golang

      Golang


      • Основы Git
      • Основы Golang
      • Продвинутый Golang
      • Golang - Templ Fiber HTMX
    • Картинка группы C#

      C#


      • Основы C#
    • Картинка группы Python

      Python


      • Основы Python
      • Продвинутый Python Иконка курсаСкоро!
    • Картинка группы PHP

      PHP


      • Основы PHP Иконка курсаСкоро!
    • Картинка группы Общее

      Общее


      • Основы разработки
      • Docker и Ansible
      • Kubernetes и Helm
      • Микросервисы
      • Neovim
    • Картинка группы Общее

      Общее


      • Основы разработки
      • Основы Git
      • Основы Linux
      • Bash скрипты
      • Docker и Ansible
      • Kubernetes и Helm
      • Микросервисы
      • Neovim
    • Картинка группы Общее

      Общее


      • Основы разработки
      • Основы Git
      • Neovim
    • Картинка группы React Native

      React Native


      • HTML и CSS
      • Основы JavaScript
      • Продвинутый JavaScript
      • TypeScript с нуля
      • React и Redux Toolkit
      • React Native и Expo Router
    • Картинка группы Flutter

      Flutter


      • Основы Flutter Иконка курсаСкоро!
    • Картинка группы Swift

      Swift


      • Основы Swift и iOS
    • Картинка группы Общее

      Общее


      • Продвинутое тестирование Иконка курсаСкоро!
      • Основы тестирования ПО
    • Картинка группы Общее

      Общее


      • Собеседование
      • Современный Agile
    • Картинка группы Figma

      Figma


      • Основы дизайна
  • логотип PurpleSchool
    • Сообщество
    • PurpleПлюс
    • AI тренажёр
    • Проекты
    Главная
    Сообщество
    [ready to use] 3 bash-скрипта для разработчика

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

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

    Роман Лобигер

    Иконка календаря12 марта 2025
    постjuniorИконка уровня junior
    Картинка поста [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 в проектах, над которыми давно не работал

    ⠀

    С чего начать

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

    🔥 Если готовы внедрять — от меня бонусная поддержка.

    Появятся вопросы — пишите в комментариях под этим постом в телеграме, по основным моментам буду отвечать, помогать сегодня и завтра.

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

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

    Bash скрипты — часть карты развития DevOps

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

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

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

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

    Docker и Ansible

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

    Kubernetes и Helm

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

    Микросервисы

    Антон Ларичев
    Гарантия
    Бонусы
    иконка звёздочки рейтинга4.8
    3 999 ₽ 6 990 ₽
    Подробнее
    Иконка чипа0

    Комментарии

    1
    Иконка аватара
    Сергей Ткаченко

    12.03.2025

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