Bash-скрипт — это текстовый файл с командами, которые сервер выполняет последовательно. Написать его можно через Cursor или Windsurf за несколько минут: описываешь задачу по-русски, AI генерирует готовый .sh-файл, ты меняешь переменные под свой серве…
400 000+ органических переходов за 3 месяца. Со-основатель GoBanana (231K пользователей, 12+ млн ₽ без рекламы) и NeuroScribe (65K пользователей). SEO/GEO-стратегии для AI-поисковиков, 1 700+ единиц контента, 17+ реализованных стратегий.
Об авторе →Claude Code: новый CLI-агент от Anthropic
Anthropic выпустила Claude Code — терминальный AI-агент для разработчиков. Инструмент работает прямо в командной строке и умеет писать, редактировать и запускать код.
Zcode AI: Полный гид по визуальному интерфейсу для Claude Code и AI-агентов
Узнайте, как использовать Zcode для управления Claude Code, Gemini и Codex в едином GUI. Настройка провайдеров, MCP-серверов и визуальный вайбкодинг.
YouTube-канал с монетизацией из любой точки мира: Пошаговый гайд 2026
Инструкция по созданию YouTube-канала: обход блокировок SMS, настройка расширенных функций через виртуальные номера и правила безопасности для монетизации.
Windsurf Code Maps: Как глубоко понимать архитектуру проекта перед написанием кода
Полный гайд по Windsurf Code Maps, модели Sway 1.5 и Sway Grep. Узнайте, как визуализировать архитектуру кода и ускорить разработку в 13 раз.
Vk Fast Cash Strategy
Аудитория ВКонтакте — это те же люди, что и в Instagram, но 'социальный контракт' площадки другой. Если Instagram — это 'дорогой ресторан' с демонстрацией успеха, то VK — это 'душевная шашлычная'. Здесь не работает глянцевый 'успешный успех
Обновлено: июнь 2026
Bash-скрипт — это текстовый файл с командами, которые сервер выполняет последовательно. Написать его можно через Cursor или Windsurf за несколько минут: описываешь задачу по-русски, AI генерирует готовый .sh-файл, ты меняешь переменные под свой сервер и запускаешь chmod +x. Ниже — 5 шаблонов для реальных задач и промпты под каждый.
В статье: почему bash остаётся стандартом автоматизации Linux в 2026, как писать bash-скрипты через Cursor и Windsurf, 5 готовых шаблонов (бэкап, очистка логов, деплой через rsync/SSH, мониторинг CPU, cron-рестарт сервисов) с объяснением каждого шага, и промпты под каждую задачу. Плюс глоссарий для тех, кто видит bash впервые.
Bash работает на любом Linux без дополнительных зависимостей. Docker, облака, VPS — bash есть везде, и это не изменится.
Каждый раз, когда нужно повторить одну и ту же серию команд — запустить деплой, почистить логи, проверить диск — можно делать это руками. Или один раз написать скрипт и забыть. Bash — это буквально duct tape для Linux, как формулируют в сообществе devops: берёшь несколько утилит, соединяешь пайпами, добавляешь условие if, и задача автоматизирована.
Python, Node, Go тоже умеют автоматизировать. Но у них есть зависимости, версии, виртуальные окружения. У bash — нет. Файл скрипта, права на выполнение, и всё. Запустится на Ubuntu 20.04, 22.04, 24.04 и на Rocky Linux без единой установки.
Кроме того, bash нативно встраивается в cron, systemd, CI/CD пайплайны. Это язык, на котором разговаривают серверы.

Описываешь задачу в чате AI-ассистента на русском → получаешь готовый .sh-файл → меняешь пути под себя → запускаешь. Структура одна для Cursor и Windsurf.
Базовая структура любого bash-скрипта:
#!/bin/bash
# Это shebang — указывает, каким интерпретатором запускать файл
# Переменные (меняй под себя)
SOURCE_DIR="/var/www"
BACKUP_DIR="/backups"
# Команды
echo "Начинаем архивацию..."
tar -czf "$BACKUP_DIR/backup-$(date +%Y%m%d).tar.gz" "$SOURCE_DIR"
echo "Готово"Первая строка #!/bin/bash — обязательна. Без неё система не поймёт, что это bash-скрипт. Она называется shebang. Чтобы узнать путь к bash на своём сервере, запусти which bash.
После создания файла нужна одна команда:
chmod +x имя-скрипта.shБез неё Linux видит файл как текст, а не как программу.

Архивирует папку в tar.gz с датой в имени и удаляет бэкапы старше 7 дней. Ставится в cron на ночное время.
Самая частая задача. Потерять данные из-за отсутствия бэкапов — больно. Этот скрипт делает снимок нужной директории каждую ночь и сам удаляет старые архивы, чтобы диск не переполнился.
#!/bin/bash
# === НАСТРОЙКИ (меняй под себя) ===
SOURCE_DIR="/var/www/myapp"
BACKUP_DIR="/backups"
KEEP_DAYS=7
LOG_FILE="/var/log/backup.log"
# === СКРИПТ (не трогай) ===
DATE=$(date +%Y-%m-%d_%H-%M)
FILENAME="backup-${DATE}.tar.gz"
mkdir -p "$BACKUP_DIR"
echo "[$DATE] Начинаем бэкап $SOURCE_DIR" >> "$LOG_FILE"
tar -czf "$BACKUP_DIR/$FILENAME" "$SOURCE_DIR" 2>> "$LOG_FILE"
if [ $? -eq 0 ]; then
echo "[$DATE] Бэкап создан: $FILENAME" >> "$LOG_FILE"
else
echo "[$DATE] ОШИБКА при создании бэкапа" >> "$LOG_FILE"
exit 1
fi
# Удаляем старые бэкапы
find "$BACKUP_DIR" -name "backup-*.tar.gz" -mtime +$KEEP_DAYS -delete
echo "[$DATE] Бэкапы старше $KEEP_DAYS дней удалены" >> "$LOG_FILE"Промпт для Cursor/Windsurf:
Напиши bash-скрипт для Ubuntu 22.04. Задача: архивировать директорию /var/www/myapp в /backups с датой и временем в имени файла формата backup-YYYY-MM-DD_HH-MM.tar.gz. После создания архива проверить exit code — если ошибка, записать в лог и выйти с кодом 1. Удалить архивы старше 7 дней из /backups. Все действия логировать в /var/log/backup.log. Вынести пути и количество дней хранения как переменные в начало файла.
Добавить в cron (crontab -e):
0 3 * * * /home/user/scripts/backup.shЭто запуск каждую ночь в 03:00. $? в скрипте — это exit code предыдущей команды: 0 означает успех, любое другое число — ошибку.

Находит лог-файлы старше N дней и удаляет. Незаменим для серверов с большим количеством сервисов.
Логи растут быстро. Nginx, PHP, приложение — через месяц /var/log легко занимает несколько гигабайт. Этот скрипт зачищает хвосты.
#!/bin/bash
# === НАСТРОЙКИ ===
LOG_DIRS=("/var/log/nginx" "/var/log/php" "/var/log/myapp")
KEEP_DAYS=14
REPORT_FILE="/var/log/cleanup-report.log"
# === СКРИПТ ===
DATE=$(date +%Y-%m-%d_%H-%M)
TOTAL_FREED=0
echo "[$DATE] Начинаем очистку логов" >> "$REPORT_FILE"
for DIR in "${LOG_DIRS[@]}"; do
if [ -d "$DIR" ]; then
# Считаем размер до удаления
SIZE_BEFORE=$(du -sh "$DIR" 2>/dev/null | cut -f1)
# Удаляем старые .log файлы
find "$DIR" -name "*.log" -mtime +$KEEP_DAYS -delete
find "$DIR" -name "*.log.gz" -mtime +$KEEP_DAYS -delete
SIZE_AFTER=$(du -sh "$DIR" 2>/dev/null | cut -f1)
echo "[$DATE] $DIR: до=$SIZE_BEFORE, после=$SIZE_AFTER" >> "$REPORT_FILE"
else
echo "[$DATE] ПРЕДУПРЕЖДЕНИЕ: $DIR не существует" >> "$REPORT_FILE"
fi
done
echo "[$DATE] Очистка завершена" >> "$REPORT_FILE"Промпт для Cursor/Windsurf:
Напиши bash-скрипт очистки логов для Linux. Задача: обходить список директорий (переменная-массив в начале файла), в каждой удалять файлы *.log и *.log.gz старше 14 дней. До и после удаления замерять размер директории через du -sh и писать в лог-файл. Если директория не существует — писать предупреждение в лог, не падать с ошибкой. Пути, расширения и срок хранения вынести как переменные.

Синхронизирует файлы с удалённого сервера одной командой. Работает как упрощённый CI/CD для небольших проектов.
Самый частый сценарий у вайбкодеров: собрал проект локально, надо закинуть на сервер. FTP — прошлый век. rsync через SSH — быстро, безопасно, передаёт только изменённые файлы.
#!/bin/bash
# === НАСТРОЙКИ ===
LOCAL_DIR="/home/user/myproject/dist/"
REMOTE_USER="deploy"
REMOTE_HOST="123.45.67.89"
REMOTE_DIR="/var/www/myapp/"
SSH_KEY="$HOME/.ssh/deploy_key"
EXCLUDE_FILE=".rsync-exclude" # файл со списком исключений (опционально)
# === ПРОВЕРКИ ===
if [ ! -d "$LOCAL_DIR" ]; then
echo "ОШИБКА: Локальная директория $LOCAL_DIR не существует"
exit 1
fi
if [ ! -f "$SSH_KEY" ]; then
echo "ОШИБКА: SSH-ключ $SSH_KEY не найден"
exit 1
fi
# === ДЕПЛОЙ ===
echo "Начинаем деплой на $REMOTE_HOST..."
rsync -avz --delete \
-e "ssh -i $SSH_KEY" \
--exclude='.git' \
--exclude='node_modules' \
--exclude='.env' \
"$LOCAL_DIR" \
"$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR"
if [ $? -eq 0 ]; then
echo "Деплой успешен: $(date)"
# Опционально: перезапускаем сервис после деплоя
ssh -i "$SSH_KEY" "$REMOTE_USER@$REMOTE_HOST" "sudo systemctl restart myapp"
else
echo "ОШИБКА деплоя"
exit 1
fiПромпт для Cursor/Windsurf:
Напиши bash-скрипт деплоя для Linux. rsync синхронизирует локальную папку /home/user/myproject/dist/ на удалённый сервер через SSH с ключом ~/.ssh/deploy_key. Исключить .git, node_modules, .env. После успешного rsync выполнить на удалённом сервере sudo systemctl restart myapp через SSH. Перед стартом проверить существование локальной директории и SSH-ключа, при ошибке — exit 1. Все настройки (хост, пользователь, пути, ключ) вынести в переменные в начале файла.
Максим: «Ребят, это работает. Мы деплоим GoBanana примерно по такой же схеме — rsync плюс SSH-ключ, без никаких GitHub Actions для мелких апдейтов. Описал задачу в Cursor, получил скрипт, поправил три переменные. На всё ушло 20 минут.»

Проверяет загрузку CPU каждые N минут. Если превышает порог — отправляет уведомление через curl на webhook (Telegram, Slack, Discord).
Сервер завис, а ты узнал об этом от клиента — неприятно. Этот скрипт мониторит нагрузку и сообщает раньше, чем всё упадёт.
#!/bin/bash
# === НАСТРОЙКИ ===
CPU_THRESHOLD=80 # процент загрузки для алерта
WEBHOOK_URL="https://api.telegram.org/bot{TOKEN}/sendMessage"
CHAT_ID="123456789"
CHECK_INTERVAL=60 # секунды между проверками
HOSTNAME=$(hostname)
# === ФУНКЦИЯ АЛЕРТА ===
send_alert() {
local MESSAGE="$1"
curl -s -X POST "$WEBHOOK_URL" \
-d "chat_id=$CHAT_ID" \
-d "text=$MESSAGE" > /dev/null 2>&1
}
# === МОНИТОРИНГ ===
echo "Мониторинг CPU запущен. Порог: $CPU_THRESHOLD%"
while true; do
# Получаем среднюю загрузку CPU за последние 5 минут
CPU_LOAD=$(top -bn1 | grep "Cpu(s)" | awk '{print $2}' | cut -d'.' -f1)
if [ "$CPU_LOAD" -gt "$CPU_THRESHOLD" ] 2>/dev/null; then
TIMESTAMP=$(date "+%Y-%m-%d %H:%M:%S")
MESSAGE="[АЛЕРТ] $HOSTNAME: загрузка CPU = ${CPU_LOAD}% (порог ${CPU_THRESHOLD}%) в $TIMESTAMP"
echo "$MESSAGE"
send_alert "$MESSAGE"
fi
sleep "$CHECK_INTERVAL"
doneПромпт для Cursor/Windsurf:
Напиши bash-скрипт мониторинга CPU для Ubuntu. Каждые 60 секунд проверяет загрузку CPU через top. Если загрузка превышает порог (переменная CPU_THRESHOLD, по умолчанию 80%), отправляет POST-запрос через curl на Telegram Webhook с сообщением: hostname, текущий процент CPU, дата и время. Переменные для настройки: URL вебхука, chat_id, порог, интервал проверки. Скрипт работает в бесконечном цикле while true.
Проверяет статус сервиса и перезапускает его, если он упал. Простейшая защита от аварийных остановок.
#!/bin/bash
# === НАСТРОЙКИ ===
SERVICE_NAME="nginx" # имя systemd-сервиса
LOG_FILE="/var/log/service-watchdog.log"
NOTIFY_WEBHOOK="" # опционально: webhook для алертов
# === ПРОВЕРКА ===
DATE=$(date "+%Y-%m-%d %H:%M:%S")
if ! systemctl is-active --quiet "$SERVICE_NAME"; then
echo "[$DATE] ВНИМАНИЕ: $SERVICE_NAME не работает. Перезапускаем..." >> "$LOG_FILE"
systemctl restart "$SERVICE_NAME"
sleep 3
if systemctl is-active --quiet "$SERVICE_NAME"; then
echo "[$DATE] $SERVICE_NAME успешно перезапущен" >> "$LOG_FILE"
if [ -n "$NOTIFY_WEBHOOK" ]; then
curl -s -X POST "$NOTIFY_WEBHOOK" \
-d "text=[$SERVICE_NAME] Сервис был упавшим и перезапущен в $DATE" > /dev/null 2>&1
fi
else
echo "[$DATE] ОШИБКА: не удалось перезапустить $SERVICE_NAME" >> "$LOG_FILE"
fi
else
echo "[$DATE] $SERVICE_NAME работает нормально" >> "$LOG_FILE"
fiПромпт для Cursor/Windsurf:
Напиши bash-скрипт watchdog для systemd-сервиса на Linux. Проверяет через systemctl is-active, запущен ли сервис (имя сервиса — переменная SERVICE_NAME). Если нет — перезапускает через systemctl restart, ждёт 3 секунды, снова проверяет. Если перезапуск удался — пишет в лог. Если нет — пишет ошибку в лог. Опционально отправлять уведомление через curl на webhook, если переменная NOTIFY_WEBHOOK не пустая. Весь ход работы логировать в /var/log/service-watchdog.log.
Добавить в cron каждые 5 минут:
*/5 * * * * /home/user/scripts/watchdog.sh
cron запускает скрипты по расписанию без вашего участия. Нужна одна строка в crontab.
Откройте редактор crontab:
crontab -eСинтаксис строки:
МИНУТЫ ЧАСЫ ДЕНЬ_МЕСЯЦА МЕСЯЦ ДЕНЬ_НЕДЕЛИ /путь/к/скрипту.sh >> /лог.log 2>&1| Пример строки | Что делает |
|---|---|
| 0 3 * * * | Каждый день в 03:00 |
| */5 * * * * | Каждые 5 минут |
| 0 0 * * 1 | Каждый понедельник в полночь |
| 30 2 1 * * | Первого числа каждого месяца в 02:30 |
| @reboot | При каждом перезагрузке сервера |
>> /var/log/script.log 2>&1 после пути к скрипту — это перенаправление вывода в лог-файл. >> добавляет в конец (не перезаписывает), 2>&1 туда же пишет ошибки.
Проверить, что задача добавлена:
crontab -lЧем конкретнее задача, тем лучше результат. AI не угадывает — он генерирует именно то, что описано.
Структура хорошего промпта для bash-скрипта:
Ubuntu 22.04, Rocky Linux 9)Слабый промпт: «Напиши скрипт бэкапа»
Сильный промпт: «Напиши bash-скрипт для Ubuntu 22.04. Архивировать /var/www/myapp в /backups как tar.gz с датой YYYY-MM-DD в имени. Проверить exit code после tar, если ошибка — записать в /var/log/backup.log и выйти с кодом 1. Удалять архивы старше 7 дней. Пути и срок хранения — переменные в начале файла»
Три рабочих шаблона промптов:
Для задач мониторинга:
Напиши bash-скрипт для [ОС]. Каждые [N] секунд/минут проверяет [что именно — размер диска / загрузку CPU / доступность URL]. Если значение превышает [порог] — [действие: пишет в лог / отправляет curl на webhook / перезапускает сервис]. Скрипт в бесконечном цикле while true. Переменные: [порог], [интервал], [URL webhook], [путь к логу].
Для задач деплоя:
Напиши bash-скрипт деплоя. rsync синхронизирует [локальная папка] на сервер [IP] под пользователем [user] через SSH-ключ [путь к ключу]. Исключить [список папок и файлов]. После успешного rsync — выполнить на сервере [команда]. При ошибке на любом шаге — exit 1. Переменные: [IP, пользователь, пути, SSH-ключ].
Для задач очистки:
Напиши bash-скрипт очистки для Linux. Обходить список директорий [массив]. В каждой удалять файлы [маска] старше [N] дней через find -mtime. До и после замерять размер через du -sh и писать в лог. Если директория не существует — предупреждение в лог, не выходить с ошибкой.

| Инструмент | Плюсы | Минусы | Когда выбирать |
|---|---|---|---|
| Cursor | Многофайловые правки, хорошо понимает контекст проекта | Дороже Windsurf на длинных итерациях | Есть несколько взаимосвязанных скриптов |
| Windsurf | Экономичнее по токенам, Cascade хорош на длинных задачах | Чуть медленнее на автодополнении | Разовые задачи, экономия |
| Claude Code | Прямо в терминале, не нужен GUI | Нет визуальной IDE | Чисто серверные задачи, есть SSH-доступ |
| Текстовый редактор + ChatGPT | Бесплатно | Нет контекста проекта, каждый раз заново | Разовый простой скрипт |
Для вайбкодера без опыта в bash — рекомендуем Cursor или Windsurf. Они видят файловую структуру проекта и могут сами предложить, куда положить скрипт и как его вызывать.

Bash — Bourne Again Shell, командный интерпретатор и язык скриптов, стандарт Linux-серверов с 1989 года.
Shebang (#!/bin/bash) — первая строка скрипта. Указывает ОС, каким интерпретатором запускать файл.
chmod +x — команда, дающая файлу право на выполнение. Без неё скрипт не запустится как программа.
cron — планировщик задач Linux. Запускает скрипты по расписанию (каждый час, раз в сутки, раз в неделю).
crontab — файл конфигурации cron для конкретного пользователя. Редактируется командой crontab -e.
rsync — утилита синхронизации файлов. Передаёт только изменённые данные, работает через SSH.
Exit code — код завершения команды или скрипта. 0 — успех, любое другое число — ошибка. Доступен через $?.
systemd — система управления сервисами в современных Linux-дистрибутивах. Команды: systemctl start/stop/restart/status.
pipe (|) — передаёт вывод одной команды на вход другой. Например: cat file.log | grep ERROR — ищет строки с ERROR в файле.
tar.gz — формат сжатого архива. tar -czf archive.tar.gz /path — создать, tar -xzf archive.tar.gz — распаковать.
Базовые задачи — нет. Бэкап, очистку логов, деплой через rsync можно написать через AI-ассистент (Cursor, Windsurf) без знания Bash. Нужно только понять структуру: shebang, переменные, chmod +x. Около 80% рутинных серверных задач решаются парой десятков строк кода, которые AI генерирует за секунды по вашему описанию на русском языке.
Через cron. Откройте crontab -e, добавьте строку с расписанием. Для запуска каждую ночь в 03:00: 0 3 * * * /home/user/scripts/backup.sh >> /var/log/backup.log 2>&1. Символы >> перенаправляют вывод в лог-файл, 2>&1 добавляет туда ещё и ошибки.
Создайте файл backup.sh в Cursor или Windsurf, откройте Chat или Cascade и опишите задачу конкретно: ОС, что делает, откуда берёт данные, куда пишет, что делать при ошибке. AI напишет весь код. Останется добавить свои переменные (путь, сервер, SSH-ключ) и запустить chmod +x.
Cursor и Windsurf одинаково хорошо справляются с bash-задачами. Cursor удобнее для многофайловых проектов. Windsurf — чуть экономичнее по токенам на длинных итерациях. Claude Code в терминале быстрее всего для чисто серверных задач: описал задачу → получил скрипт → запустил, не выходя из терминала.
Три шага. Первый: bash -n скрипт.sh — проверяет синтаксис без выполнения. Второй: bash -x скрипт.sh — режим отладки, каждая команда выводится перед выполнением. Третий: тест на безопасных данных, не на продакшне. Для деплой-скриптов добавь echo перед финальной командой, чтобы сначала увидеть что именно будет выполнено.
Два способа. Через позиционные аргументы: ./backup.sh /var/www /backups — внутри скрипта они $1 и $2. Через переменные окружения: export BACKUP_DIR=/backups && ./backup.sh — внутри читается как $BACKUP_DIR. Для конфигурируемых скриптов удобнее вынести переменные в начало файла.
Команда chmod +x файл.sh добавляет право на выполнение. Без неё Linux видит файл как обычный текст. После chmod +x можно запускать скрипт напрямую: ./backup.sh. Для cron-задач и системных скриптов chmod +x обязателен.
Если задача сложнее — несколько скриптов, взаимодействие с API, автоматизация деплоя всего стека — смотри каталог AI-инструментов на VibeCoderz. Там же обзоры Cursor, Windsurf и Claude Code с конкретными сценариями использования.
Если хочешь разобраться с автоматизацией под свой проект — запишись на консультацию к Максиму. Он разберет задачу и покажет, как это решается через вайбкодинг за один созвон.
Обновлено: июнь 2026 | Проверено на Ubuntu 22.04 и Rocky Linux 9