我想将Unicode头骨和交叉骨头添加到我的shell提示符(特别是' skull and crossbones ' (U+2620)),但我不知道让echo吐出它的魔法咒语,或任何其他4位Unicode字符。两位数的数字很简单。例如echo -e "\x55",。
除了下面的答案之外,还应该注意到,很明显,您的终端需要支持Unicode以使输出符合您的期望。Gnome-terminal在这方面做得很好,但它在默认情况下不一定是打开的。
在macOS的终端应用程序中,选择首选项->编码,并选择Unicode (UTF-8)。
这三个命令中的任何一个都可以在控制台中打印你想要的字符,前提是控制台接受UTF-8字符(大多数当前的都接受):
echo -e "SKULL AND CROSSBONES (U+2620) \U02620"
echo $'SKULL AND CROSSBONES (U+2620) \U02620'
printf "%b" "SKULL AND CROSSBONES (U+2620) \U02620\n"
SKULL AND CROSSBONES (U+2620) ☠
之后,您可以将实际的字形(图像、字符)复制并粘贴到任何文本编辑器(启用UTF-8)。
如果你需要看到这样的Unicode Code Point是如何用UTF-8编码的,使用xxd(比od更好的十六进制查看器):
echo $'(U+2620) \U02620' | xxd
0000000: 2855 2b32 3632 3029 20e2 98a0 0a (U+2620) ....
That means that the UTF8 encoding is: e2 98 a0
或者,在HEX中避免错误:0xE2 0x98 0xA0。也就是说,空格(HEX 20)和换行(HEX 0A)之间的值。
如果您想深入了解数字到字符的转换:请查看Greg的wiki (BashFAQ)中关于Bash中的ASCII编码的文章!
只要您的文本编辑器能够处理Unicode(假定以UTF-8编码),您就可以直接输入Unicode代码点。
例如,在Vim文本编辑器中,您可以进入插入模式并按Ctrl + V + U,然后按4位十六进制数(必要时可以用零填充)。输入Ctrl + V + U 2 6 20。参见:在文档中插入Unicode字符的最简单方法是什么?
在运行Bash的终端上,您可以键入CTRL+SHIFT+U,并键入所需字符的十六进制码位。在输入过程中,你的光标应该显示一个带下划线的u。你输入的第一个非数字结束输入,并呈现字符。所以你可以在Bash中使用以下方法打印U+2620:
echo CTRL + SHIFT + U2620ENTERENTER
(第一个输入结束Unicode输入,第二个执行echo命令。)
来源:Ubuntu SE