bash 提示中令人敬畏的符号和字符

Naf*_*Kay 89 bash prompt unicode

我刚刚看到了某人终端的屏幕截图:

显示带有星号和箭头的提示的会话屏幕截图

是否有可以在 Bash 提示中使用的所有字符的列表,或者有人可以为我提供星星和右箭头的字符吗?

Gil*_*il' 110

您可以使用任何可打印的字符,bash 不介意。您可能希望将终端配置为支持Unicode(以UTF-8的形式)。

Unicode 中有很多字符,因此这里有一些提示可帮助您搜索 Unicode 图表:

  • 您可以尝试在Shapecatcher上绘制角色。它会尝试识别您绘制的内容中的 Unicode 字符。
  • 你可以试着找出这个角色在哪个块中。例如,那个看起来很奇怪的符号和那个星星会在一个杂七杂八的符号块中;像??这样的字符是带有修饰符的拉丁字母;?是一个数学符号,等等。
  • 您可以尝试在字符描述中想一个单词,然后在 unicode 符号名称和描述列表中查找它。GucharmapKcharselect可以提供帮助。

PS 在 Shapecatcher 上,我得到了U+2234 THEREFORE for ?U+2192 RIGHTWARDS ARROW for ?U+263F MERCURY for?U+2605 BLACK STAR for ?

在 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
Run Code Online (Sandbox Code Playgroud)

从 bash 4.2 开始,您可以\u$'…'字符串中使用后跟 4 个十六进制数字。

  PS1=$'\\[\e[31m\\]\u2234\\[\e[0m\\]\n\u2192 \u263f \\~ \\[\e[31m\\]\u2605 $? \\[\e[0m\\]'
Run Code Online (Sandbox Code Playgroud)

  • @TKKocheran `1` 是一个错字,它只是 `hexdump -C`(或在某些系统上简称为 `hd`)。 (2认同)
  • @FaithReaper `\uNNNN` 语法是 `$'...'` 引用的一个特性,而不是快速扩展。`PS1` 的值必须包含 Unicode 字符。`$'\u1234'` 是一种将 Unicode 字符放入字符串的方法。 (2认同)

jas*_*yan 13

您可以在许多网站上找到 unicode 符号,例如:http : //panmental.de/symbols/info.htm

您只需要确保您的术语支持​​ UTF-8

  • 请参阅@Gilles 的回答,或此:http://stackoverflow.com/questions/602912/how-do-you-echo-a-4-digit-unicode-character-in-bash (2认同)