Экранирование аргументов оболочки

Безопасно заключайте любую строку в кавычки для POSIX sh/Bash/Zsh (одинарные кавычки), Bash ANSI-C $'…' или PowerShell — либо разбирайте слова в кавычках обратно.

Символов: 19 · байт: 19 (UTF-8)

Символов: 0 · байт: 0 (UTF-8)

Работает полностью в вашем браузере. Ваши данные никуда не загружаются.

Что такое Экранирование для оболочки?

Превращает любой текст в один аргумент оболочки, который shell передаст без изменений, включая кавычки, $, обратные кавычки, пробелы и переводы строк. Поддерживает оболочки POSIX, ANSI-C-экранирование Bash/Zsh и PowerShell и умеет разбирать слова в кавычках обратно.

Как пользоваться Экранирование для оболочки

  1. Выберите Экранировать или Снять экранирование.
  2. Укажите Оболочка: POSIX sh/Bash/Zsh, Bash/Zsh ANSI-C или PowerShell.
  3. При необходимости включите Каждая строка — отдельный аргумент или Всегда заключать в кавычки.
  4. Вставьте значение в Ввод и скопируйте аргумент в кавычках из Вывод.

Пример

Ввод
It's $HOME
Вывод
'It'\''s $HOME'

Когда использовать Экранирование для оболочки

Используйте, когда строите команды с именами файлов, паролями или пользовательским вводом — в скриптах, командах SSH, конфигурациях CI или документации. Windows cmd.exe не поддерживается: в нём нет экранирования, безопасного для любого ввода. В программах предпочитайте передачу массивов аргументов (например, execFile, subprocess.run([...])) вместо построения строк для оболочки.

Как работает Экранирование для оболочки

Режим POSIX оборачивает текст в одинарные кавычки, внутри которых нет ничего особенного, а каждый ' записывает как '\'' (закрыть кавычку, экранированная кавычка, открыть снова) — тот же подход, что у shlex.quote в Python. Простые слова только из A–Z a–z 0–9 _ @ % + = : , . / - остаются без кавычек, если вы не попросили их добавить. Режим ANSI-C даёт $'…' с экранированием \n, \t, \' и \xHH, которое делает управляющие символы видимыми. Режим PowerShell использует одинарные кавычки и удваивает каждую одинарную кавычку (включая типографские ‘ ’). Режим снятия экранирования разбирает слова так, как это делает оболочка (кавычки, обратные косые черты, $'…'), не выполняя никаких подстановок.

Распространенные Случаи Использования

  • Передача команде имени файла с пробелами или кавычками
  • Встраивание полезной нагрузки JSON в команду curl
  • Экранирование аргументов для ssh host "command"
  • Понимание того, что на самом деле передаёт сложная командная строка с кавычками

Примечание по Безопасности

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

Часто Задаваемые Вопросы

Почему бы просто не использовать двойные кавычки?

Внутри двойных кавычек оболочка всё равно раскрывает $VAR, обратные кавычки и \. Одинарные кавычки отключают любые подстановки, поэтому безопасны для произвольного текста.

Что означает '\''?

Это завершает часть в одинарных кавычках, добавляет экранированную буквальную кавычку и начинает новую часть в одинарных кавычках. Оболочка склеивает фрагменты в один аргумент.

Поддерживается ли Windows cmd.exe?

Нет. В cmd.exe нет экранирования, которое надёжно защищает символы вроде % и ^ в любом контексте. Используйте режим PowerShell или избегайте оболочки.

Что сделать дальше

Другие категории