Shell 参数转义器

为 POSIX sh/Bash/Zsh(单引号)、Bash ANSI-C $'…' 或 PowerShell 安全地引用任意字符串——也可将带引号的 Shell 单词解析回原值。

19 个字符 · 19 字节(UTF-8)

0 个字符 · 0 字节(UTF-8)

完全在浏览器中运行,您的数据不会被上传。

什么是 Shell 转义?

将任意文本转换为 Shell 能原样传递的单个 Shell 参数——包括引号、$、反引号、空格和换行。它支持 POSIX Shell、Bash/Zsh 的 ANSI-C 引用和 PowerShell,也能把带引号的单词解析回去。

如何使用 Shell 转义

  1. 选择转义或反转义。
  2. 选择 Shell 类型:POSIX sh/Bash/Zsh、Bash/Zsh ANSI-C 或 PowerShell。
  3. 也可以选择将每行作为一个独立参数或始终添加引号。
  4. 将值粘贴到输入中,从输出中复制带引号的参数。

示例

输入
It's $HOME
输出
'It'\''s $HOME'

何时使用 Shell 转义

在构建包含文件名、密码或用户输入的命令时使用——无论是脚本、SSH 命令、CI 配置还是文档。不支持 Windows 的 cmd.exe,因为它没有对所有输入都安全的引用方式。在程序中,建议传递参数数组(如 execFile、subprocess.run([...])),而不是拼接 Shell 字符串。

Shell 转义 的工作原理

POSIX 模式把文本包在单引号内,其中没有任何特殊字符,并把每个 ' 写成 '\''(关闭引号、转义的引号、重新打开)——与 Python 的 shlex.quote 方法相同。只由 A–Z a–z 0–9 _ @ % + = : , . / - 组成的简单单词不会加引号,除非你要求加引号。ANSI-C 模式生成带有 \n、\t、\' 和 \xHH 转义的 $'…',能直观地显示控制字符。PowerShell 模式使用单引号,并把每个单引号(包括排版用的 ‘ ’)重复一次。反转义模式像 Shell 一样解析单词(引号、反斜杠、$'…'),但不执行任何展开。

常见用例

  • 向命令传递带空格或引号的文件名
  • 在 curl 命令中嵌入 JSON 载荷
  • 为 ssh host "command" 引用参数
  • 弄清一条复杂的带引号命令行实际传递了什么

安全提示

只有当被引用的值作为单个参数使用时,正确的引用才能防止命令注入;它不会让不安全的命令变得安全。

常见问题

为什么不直接用双引号?

在双引号内,Shell 仍会展开 $VAR、反引号和 \。单引号会禁用所有展开,因此对任意文本都是安全的。

'\'' 是什么意思?

它结束单引号部分,添加一个被转义的字面引号,再开始新的单引号部分。Shell 会把这几段拼接成一个参数。

支持 Windows 的 cmd.exe 吗?

不支持。cmd.exe 没有能在所有上下文中可靠保护 % 和 ^ 等字符的引用方式。请使用 PowerShell 模式,或避免使用 Shell。

推荐的下一步

探索更多分类