bash提示中的真棒符号和字符


81

我只是碰到某人终端的屏幕截图:

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

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

Answers:


104

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

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

  • 您可以尝试在Shapecatcher上绘制角色。它尝试在您绘制的内容中识别Unicode字符。
  • 您可以尝试找出字符在哪个块中。像Ǫı这样的字符是带有修饰符的拉丁字母;是一个数学符号,依此类推。
  • 您可以尝试在字符描述中想到一个单词,然后在Unicode符号名称和描述列表中查找它。GucharmapKcharselect可以提供帮助。

PS在Shapecatcher,我得到了U + 2234 THEREFOREU + 2192向右ARROWU + 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\\]'

嗯 当我跑步时echo ★ | hexdump -C1,我得到:hexdump: invalid option -- '1'。如果没有调用1,它将仍然有效吗?
Naftuli Kay 2011年

2
@TKKocheran这1是一个错字,只是hexdump -C(或者hd在某些系统上简称)。
Gilles

另外,您可以这样做:PS1=$'\u2234\u2192\u263f\u2605'维护起来更容易:-)

1
Shapecatcher很棒!感谢您指出
Siamore

1
@FaithReaper \uNNNN语法是$'…'引用功能,而不是即时扩展功能。的值PS1必须包含Unicode字符。$'\u1234'是将Unicode字符放入字符串中的一种方法。
吉尔斯

12

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

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


我将如何逃脱这些角色之一?即\u27A4
Naftuli凯

2
见@Gilles答案,或者这样:stackoverflow.com/questions/602912/...
jasonwryan

您可以在utf8-chartable.de上看到所有65000+个unicode点(在代码点值的上下文中,“ utf8”与“ unicode”同义。)
goldilocks 2013年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.