Bash 提示无法识别 Unicode 转义符

Naf*_*Kay 5 bash prompt quoting

我正在尝试使用 Unicode 字符自定义我的 Bash 提示,但遇到了一些麻烦。如果我尝试包含这样的 Unicode 字符:

$ echo ? | hexdump -C
00000000  e2 98 a2 0a                                       |....|
00000004

$ PS1="\xe2\x98\xa2\x0a"
Run Code Online (Sandbox Code Playgroud)

我看到我的提示如下所示:

\xe2\x98\xa2\x0a
Run Code Online (Sandbox Code Playgroud)

...而不是显示 ? 特点。我究竟做错了什么?

jw0*_*013 9

bash对于简单的双引号,这不是有效的转义语法。试试吧

PS1=$'\xe2\x98\xa2 '
Run Code Online (Sandbox Code Playgroud)

本品采用特殊的$'...'引用bash有和不支持ANSI C逃脱。请注意,这0a只是换行符(换行符),我怀疑您是否想要这样,因此我冒昧地将其替换为上面的空格。

当然,您不必经历查找 UTF-8 编码的整个复杂过程,然后输入转义符,而只需使用原始字符本身 ( PS1='? '),它仍然可以工作。