Answers:
您可以使用任何可打印的字符,bash不在乎。您可能需要将终端配置为支持Unicode(以UTF-8的形式)。
Unicode中有很多字符,因此这里有一些提示可帮助您搜索Unicode图表:
Ǫ
和ı
这样的字符是带有修饰符的拉丁字母;∉
是一个数学符号,依此类推。PS在Shapecatcher,我得到了U + 2234 THEREFORE为∴
,U + 2192向右ARROW的→
,U + 263F MERCURY用于☿
和U + 2605黑星的★
。
在bash脚本(最高bash 4.1)中,可以按其代码点写入字节,但不能输入字符。如果要避免使用非ASCII字符以使.bashrc
文件编码更灵活,则需要以UTF-8编码输入与这些字符相对应的字节。您可以通过echo ∴ → ☿ ★ | hexdump -C
在UTF-8终端中运行(例如在UTF-8中进行∴
编码)来查看十六进制值\xe2\x88\xb4
。
if [[ $LC_CTYPE =~ '\.[Uu][Tt][Ff]-?8' ]]; then
PS1=$'\\[\e[31m\\]\xe2\x88\xb4\\[\e[0m\\]\n\xe2\x86\x92 \xe2\x98\xbf \\~ \\[\e[31m\\]\xe2\x98\x85 $? \\[\e[0m\\]'
fi
从bash 4.2开始,您可以\u
在$'…'
字符串中使用4个十六进制数字。
PS1=$'\\[\e[31m\\]\u2234\\[\e[0m\\]\n\u2192 \u263f \\~ \\[\e[31m\\]\u2605 $? \\[\e[0m\\]'
1
是一个错字,只是hexdump -C
(或者hd
在某些系统上简称)。
PS1=$'\u2234\u2192\u263f\u2605'
维护起来更容易:-)
\uNNNN
语法是$'…'
引用功能,而不是即时扩展功能。的值PS1
必须包含Unicode字符。$'\u1234'
是将Unicode字符放入字符串中的一种方法。
您可以在许多站点上找到unicode符号,例如以下站点:http : //panmental.de/symbols/info.htm
您只需要确保您的术语支持UTF-8即可。
\u27A4
我喜欢使用这些工具-他们有很好的经验,并且很容易搜索:
echo ★ | hexdump -C1
,我得到:hexdump: invalid option -- '1'
。如果没有调用1,它将仍然有效吗?