Loading…

О сервисе Онлайн форматировщик Shell-скриптов

Вставьте свой shell-скрипт, нажмите «Форматировать» и получите чистый, последовательный вывод, работающий на `shfmt`. Идеально для DevOps-пайплайнов, dotfiles, точек входа контейнеров и готовых к продакшену скриптов развертывания. Без установки, без входа – только читаемый shell-код, готовый к коммиту.

Зачем использовать этот форматировщик Shell-скриптов

  • Мгновенное форматирование для POSIX sh, Bash, mksh и родственных оболочек
  • Правила в стиле shfmt для отступов, пробелов и блоков case/esac
  • Поддержка опций, таких как размер отступа, табы против пробелов и пробелы при перенаправлении
  • Вставьте исходный код или загрузите файлы `.sh`, `.bash`, `.ksh`, `.mksh` или `.bats`
  • Идеальный помощник для CI/CD пайплайнов, Docker entrypoints и dotfiles
  • Форматирование через защищенный бэкенд с логикой shfmt – не требует локальной установки
  • Копирование или скачивание очищенного скрипта в один клик

🛠️ Как форматировать shell-скрипты онлайн for shell-script-formatter

1

1. Вставьте или загрузите скрипт

📥 Вставьте код в редактор или перетащите файл `.sh`, `.bash`, `.ksh`, `.mksh` или `.bats`. Подсветка синтаксиса упрощает просмотр структуры и команд.

2

2. (Опционально) Настройте расширенные параметры

⚙️ Если ваш проект использует пользовательские правила стиля, настройте отступы или другие расширенные опции при их наличии в интерфейсе. В противном случае профиль по умолчанию уже соответствует общепринятым практикам shfmt.

3

3. Отформатируйте скрипт

✨ Нажмите **Format** для отправки скрипта в защищенный API форматирования. Он переписывает отступы, пробелы и некоторые конструкции, сохраняя поведение.

4

4. Скопируйте или скачайте результат

📤 Скопируйте отформатированный скрипт обратно в редактор или скачайте как файл `.sh`, готовый для git, CI или продакшн-деплоев.

Технические характеристики

Поддерживаемые форматы и расширения

Поддерживает распространенные диалекты shell в стиле Bourne, встречающиеся в реальных системах:

Формат / ДиалектТипичное расширениеОписание
POSIX sh.shПортативные shell-скрипты, совместимые с /bin/sh
Bash.sh, .bashСкрипты GNU Bash и интерактивные помощники
Korn shell (ksh).kshСкрипты Korn shell в устаревших средах
mksh.mkshСкрипты MirBSD Korn shell
Тесты Bats.batsТестовые наборы на основе shell с использованием Bats

Поведение форматирования (в стиле shfmt)

Бэкенд-форматтер следует правилам в стиле shfmt для единообразного оформления shell-скриптов.

АспектПоведениеПреимущество
ОтступыНормализует отступы для `if`, `for`, `while`, `case`, функций и подпроцессовУпрощает визуальное восприятие потока управления и вложенности.
ПробелыДобавляет пробелы вокруг `=` в присваиваниях и вокруг бинарных операторов, где это уместноУменьшает визуальный шум и случайные ошибки разбора.
ПеренаправленияПоддерживает расстановку пробелов вокруг `>`, `>>`, `<` в соответствии с соглашениями стиля shfmtУлучшает читаемость файловых перенаправлений.
Блоки caseВыравнивает `case`, ветви шаблонов и `esac` единообразноПредотвращает глубоко вложенные или сжатые case-конструкции.
Идемпотентный выводПовторный запуск форматера даёт тот же результатПозволяет безопасно интегрировать в pre-commit хуки и CI.

Ограничения ввода и размеры

Спроектирован для быстрой и предсказуемой работы даже на нетривиальных скриптах.

ПараметрОграничение / ПоведениеПримечания
Макс. размер ввода (текст)≈ 2 МБСкрипты большего размера лучше форматировать локально с помощью shfmt.
Макс. размер файла (загрузка)≈ 5 МБИдеально подходит для большинства скриптов развертывания и наборов утилит.
КодировкаРекомендуется UTF-8Конвертируйте устаревшие кодировки, такие как ISO-8859-1, перед форматированием.

Модель выполнения

Форматер работает через защищенный бэкенд, используя логику в стиле shfmt.

АспектПоведениеПримечания
ТранспортHTTPS-вызов к конечной точке `/api/shell-script-formatter`Предотвращает прослушивание при форматировании вашего скрипта.
Таймаут~25 секунд на запросИзбегает затянувшихся задач на очень больших или проблемных входных данных.
СемантикаТолько пробелы и расположениеЛогика вашего скрипта сохраняется; изменяется только форматирование.

Эквивалент CLI с shfmt

Хотите такое же поведение в терминале или CI-пайплайне? Используйте `shfmt` напрямую:

Linux / 🍎 macOS / 🪟 Windows (через WSL или Go)

Установите shfmt с помощью Go

go install mvdan.cc/sh/v3/cmd/shfmt@latest

Устанавливает бинарный файл `shfmt` в ваш каталог Go bin (например, `~/go/bin`).

Форматирование shell-файла с отступом в 2 пробела

shfmt -i 2 -w script.sh

Перезаписывает `script.sh` согласованно отформатированным выводом.

Форматирование и вывод в stdout

shfmt -i 4 script.sh

Использует отступ в 4 пробела и выводит в stdout без изменения файла.

Проверка форматирования в CI (без изменений)

shfmt -d scripts/

Показывает разницу для файлов, которые будут переформатированы; завершается с ненулевым кодом, если требуются изменения.

Добавьте шаг `shfmt -d` в ваш CI-пайплайн или pre-commit хук, чтобы каждый скрипт автоматически оставался чистым и согласованным.

Практические случаи использования форматирования shell-скриптов

DevOps и CI/CD пайплайны

Поддерживайте критически важные скрипты читаемыми, проверяемыми и безопасными для продакшена.

  • Очистка скриптов развертывания и отката перед слиянием в `main`.
  • Нормализация хуков в `.git/hooks`, `scripts/` и CI-помощниках.
  • Форматирование точек входа Docker и скриптов загрузки контейнеров.
shfmt -i 2 -w ./scripts/deploy.sh
shfmt -i 2 -w ./scripts/*.sh

Командная работа и открытый исходный код

Избегайте споров о стиле и сосредоточьтесь на логике при ревью.

  • Применяйте единый стиль ко всем shell-скриптам участников проекта.
  • Упростите адаптацию новых разработчиков, поддерживая порядок в dotfiles и вспомогательных файлах.
  • Сократите шумные различия в diff'ах, стандартизируя отступы и пробелы.
shfmt -w hooks/*.sh
shfmt -i 2 -ci -bn -w .

Изучение и преподавание shell-скриптинга

Показывайте лучшие практики студентам и начинающим разработчикам.

  • Приводите примеры в порядок перед добавлением в слайды или документацию.
  • Автоматически форматируйте работы студентов, чтобы сосредоточить обратную связь на семантике.
  • Демонстрируйте, как форматирование влияет на читаемость и поиск ошибок.

❓ Frequently Asked Questions

🔍Что такое shfmt?

`shfmt` — это инструмент командной строки с открытым исходным кодом для форматирования shell-скриптов, созданный mvdan. Он анализирует ваш shell-код и перезаписывает его с единообразными отступами, пробелами и структурой для POSIX sh, Bash и подобных диалектов.

⚙️Можно ли выбрать количество пробелов для отступа?

Да. При использовании в командной строке вы можете управлять отступами с помощью флага `-i` (например, `-i 2` или `-i 4`). Этот онлайн-инструмент поддерживает аналогичные настройки отступов через свой бэкенд форматирования.

🚫Перезаписывает ли этот веб-инструмент мой файл?

Нет. Форматировщик возвращает очищенный скрипт в браузере. Вы сами решаете, скопировать его в редактор или скачать как новый файл. Ваши исходные файлы остаются нетронутыми, если вы сами их не перезапишете.

💬Понимает ли он синтаксис, специфичный для Bash?

Да. Движок форматирования на основе shfmt поддерживает распространённые конструкции Bash, а также POSIX sh и дополнительные оболочки, такие как mksh и ksh.

🔒Безопасно ли форматировать здесь конфиденциальные скрипты?

Для обычных скриптов этот инструмент удобен и безопасен. Для скриптов, содержащих высокочувствительные данные (встроенные секреты, детали внутренней инфраструктуры и т.д.), обычно безопаснее запускать shfmt локально или в вашей собственной CI-среде.

Pro Tips

Best Practice

Запускайте shfmt перед каждым коммитом, чтобы история git фокусировалась на реальных изменениях, а не на пробелах.

Best Practice

Используйте `shfmt -d` вместе с CI, чтобы блокировать слияние, если скрипты неправильно отформатированы.

Best Practice

Используйте этот форматировщик вместе с ShellCheck, чтобы выявлять как стилевые, так и логические ошибки в ваших shell-скриптах.

Best Practice

Соблюдайте единообразие шебанг-строк (`#!/usr/bin/env bash`) во всех скриптах, чтобы избежать скрытых проблем с переносимостью.

Additional Resources

Other Tools