Bash

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

  • April 13, 2018

我剛剛遇到了某人終端的螢幕截圖:

會話的螢幕截圖,顯示帶有星號和箭頭的提示

是否有可以在 Bash 提示符中使用的所有字元的列表,或者有人可以給我提供星號和右箭頭的字元嗎?

您可以使用任何可列印的字元,bash 不介意。您可能希望將終端配置為支持Unicode(以UTF-8的形式)。

Unicode 中有很多字元,所以這裡有一些提示可以幫助您搜尋 Unicode 圖表:

  • 您可以嘗試在Shapecatcher上繪製角色。它會嘗試辨識您繪製的內容中的 Unicode 字元。
  • 您可以嘗試找出字元在哪個塊中。例如,那個看起來很奇怪的符號和那個星星會在一個雜項符號塊中;類似Ǫ和的字元ı是帶有修飾符的拉丁字母;是一個數學符號,等等。
  • 您可以嘗試在字元描述中想出一個詞,然後在 unicode 符號名稱和描述列表中查找它。GucharmapKcharselect可以提供幫助。

PS 在 Shapecatcher 上,我得到了U+2234 THEREFOREU+2192 RIGHTWARDS ARROWU + 263F MERCURY和U + 2605 BLACK STAR→``☿``★

在 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\\]'

引用自:https://unix.stackexchange.com/questions/25903