Bash 中的转义字符
Fumbani Banda
2023年1月30日
本教程解释了转义字符是什么,并提供了一个信息丰富的转义字符列表。
转义字符
转义字符是表示除自身之外的替代解释的字符。没有明确的列表包含所有需要在 bash 中转义的字符。但是,推荐的一般规则是如果有疑问,就转义
。
使用双引号
在转义字符周围使用双引号可以保留其字面意义。
让我们使用星号 *
和 echo 命令来演示这一点。在终端上,键入 echo *
会显示当前目录中的所有文件。但是,将 *
括在双引号中只会在标准输出中显示星号。
echo "*"
它显示以下输出。
*
Bash 中的更多转义字符
没有明确的列表包含所有需要在 bash 中转义的字符。你可以通过测试其中一些字符来找出答案。以下 bash 脚本提供了对哪些字符需要转义以及转义字符的表示的洞察。
for x in {0..127} ;do
printf -v char \\%o $x
printf -v char $char
printf -v res "%q" "$char"
esc=Escape
[ "$char" = "$res" ] && esc=-
printf "%02X %s %-7s\n" $x $esc "$res"
done | sort
该脚本显示下面的输出。我只显示了前 11 个字符。第一个字段具有字节的十六进制值,如果需要对字符进行转义,则第二个文件具有 Escape
,如果不需要,则使用 -
。最后一部分显示了字符在转义时的表示。
00 Escape ''
01 Escape $'\001'
02 Escape $'\002'
03 Escape $'\003'
04 Escape $'\004'
05 Escape $'\005'
06 Escape $'\006'
07 Escape $'\a'
08 Escape $'\b'
09 Escape $'\t'
0A Escape $'\n'
0B Escape $'\v'
0C Escape $'\f'
0D Escape $'\r'
0E Escape $'\016'
0F Escape $'\017'
10 Escape $'\020'
作者: Fumbani Banda