已有帖子Unix 和 Linux关于在 Bash 提示中包含 Unicode 字符,但是它给出的使用 UTF-16 代码(语法)的方法\uXXXX
对我来说不起作用。
我们以此箭头为例:
据我所知,在 Bash PS1 提示符中应该有 3 种方法可以处理 Unicode 字符:
- UTF-8 八进制值-在本例中为:
\342\236\244
- UTF-8 HEX 值 - 在这种情况下:
\xe2\x9e\xa4
- UTF-16 HEX 值(组合)- 在这种情况下:
\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 Server 上。
答案1
如果您想在漂亮的提示中使用\xHH
或抨击序列,请在第一个简单引号之前使用,如下所示:\uHHHH
$
PS1=$'[\\u@\\h \\W]$ \xe2\x9e\xa4 '
或者
PS1=$'[\\u@\\h \\W]$ \u27A4 '
当然,使用简单的引用时,您不需要\
在之前$
,但是使用$'...'
定义,最好\\
在每个PS1
特殊字段之前放置两个(在您的情况下为u
, h
, )W