Unix & Linux上已有一篇关于在 Bash 提示符中包含 Unicode 字符的帖子,但它提供的使用 UTF-16 代码(语法\uXXXX
)的方法对我不起作用。
我们以这个箭头为例:
如我所见,在 Bash PS1 提示符中应该有 3 种方法来处理 Unicode 字符:
- UTF-8 八进制值 - 在这种情况下:
\342\236\244
- UTF-8 十六进制值 - 在这种情况下:
\xe2\x9e\xa4
- UTF-16 十六进制值(组合)——在这种情况下:
\u27A4
但是,只有第一个选项在我的 Ubuntu 提示符下有效,如下图所示:
解释:
- 使用
PS1='[\u@\h \W]\$ \342\236\244 '
,可以正确应用 Unicode 字符。 - 使用
PS1='[\u@\h \W]\$ \xe2\x9e\xa4 '
,将应用确切的字符串。 - 使用
PS1='[\u@\h \W]\$ \u27A4 '
,它应用我的用户名 (am
),然后应用确切的值27A4
。
我知道这\u
是用户名的 Bash 快捷方式,这就是为什么我对另一个答案说这行得通感到困惑的原因——对我来说行不通。
有没有办法让 UTF-16 语法在 Ubuntu 上适用于 PS1(因为它更短也更容易阅读)?我在 Ubuntu 22.04.1 服务器上。
如果你想在漂亮的提示中使用
\xHH
or\uHHHH
bash 序列,请使用$
像这样的 before first 简单引号:或者
当然,用简单的引号,你不需要
\
in before$
,但是有了$'...'
定义,最好\\
在每个PS1
特殊字段之前放两个(u
,h
,W
在你的情况下)