这些特殊字符在Perl中如何工作?

时间:2011-07-29 06:22:27

标签: perl bash terminal

print "\e[4m", $prompt, "\e[24m", "\e[1m";

似乎它在bash中不起作用:

[root@dev-test ~]$ echo "\e[4mhello world\e[24m\e[1m"
\e[4mhello world\e[24m\e[1m

1 个答案:

答案 0 :(得分:7)

“\ e”表示用于VT100 escape sequences和类似的ESC。 Perl理解字符串中的"\e" escape sequence并将其解释为ESC字符(它也可以写成“\ 33”或“\ x1b”)。

要将ESC与echo一起使用,请提供-e选项,以便处理这些转义:

echo -e "\e[4mhello world\e[24m\e[1m"

从两个字符“\ e”到单个ESC字符(值为0x1B)的转换由echo本身(带-e)完成 - shell不处理转义出现在引号中。上面echo的链接还包含此类用法的示例。

快乐的编码。