如何在命令行中转义特殊字符

我被代码海扁署名-非商业-禁演绎
阅读 3:00·字数 901·发布 
Bilibili 空间
关注 960

前提

阅读本节的前提是对转义概念有所掌握,你可以查看编程教程转义,转义字符,转义序列介绍一节来了解相关信息。

在命令提示符中转义特殊字符

在 Windows 命令提示符中,你可以使用转义字符^来转义特殊字符。

下面,我们使用命令echo,告知用户查看环境变量PATH的方法,其中,%需要书写为^%进行转义,如果直接写为echo %PATH%,将导致输出环境变量PATH的值。

echo 请使用 echo ^%PATH^% 查看环境变量 PATH
请使用 echo %PATH% 查看环境变量 PATH

Windows 命令提示符不支持在 " 中使用 ^ 进行转义

需要注意的是,你无法在"中使用转义字符^进行转义,他将显示其自身。

再次演示命令echo,并分别使用'"括住一些内容,可以看到输出结果的不同。

echo 汤姆说 '使用 echo ^%OS^% 查看环境变量 OS'
汤姆说 '使用 echo %OS% 查看环境变量 OS'
echo 汤姆说 "使用 echo ^%OS^% 查看环境变量 OS"
汤姆说 "使用 echo ^%OS^% 查看环境变量 OS"

如何在 Windows 批处理文件中转义 %?

bat批处理文件中,对%的转义比较特别,需要使用%%而不是^%

在 PowerShell 中转义特殊字符

PowerShell 中,你可以使用转义字符`来转义特殊字符。

这里,使用命令Write-Output来显示一段信息,其中`n`t分别被转义为换行符和制表符。

Write-Output "人员名单`n`t咸蛋超人`n`t甜蛋超人"
人员名单
咸蛋超人
甜蛋超人

在 UNIX/Linux/macOS 中转义特殊字符

在 UNIX/Linux/macOS 的 Shell 程序中,通常可以使用转义字符\转义特殊字符。

下面的将转义为空格,Shell 将跳转至含有空格的文件夹custom lib

cd custom\ lib

不支持在单引号字符串中进行转义

PowerShell 以及 UNIX/Linux/macOS 中的大部分 Shell 程序,仅支持在双引号字符串,或可隐式转换为字符串的文字中进行转义,单引号中的转义字符将表示其自身,没有转义效果。

PowerShell 示例中的两个"去掉,输入的文字将隐式的转换为字符串(不能包含空格),其输出结果和之前一致。

Write-Output 人员名单`n`t咸蛋超人`n`t甜蛋超人
人员名单
咸蛋超人
甜蛋超人

PowerShell 示例中的"改为',字符`不再具有转义的作用。

Write-Output '人员名单`n`t咸蛋超人`n`t甜蛋超人'
人员名单`n`t咸蛋超人`n`t甜蛋超人