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 转义
- 选择转义或反转义。
- 选择 Shell 类型:POSIX sh/Bash/Zsh、Bash/Zsh ANSI-C 或 PowerShell。
- 也可以选择将每行作为一个独立参数或始终添加引号。
- 将值粘贴到输入中,从输出中复制带引号的参数。
示例
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。