You can use any printable character, bash doesn't mind. You'll probably want to configure your terminal to support Unicode (in the form of UTF-8).
There are a lot of characters in Unicode, so here are a few tips to help you search through the Unicode charts:
- You can try to draw the character on Shapecatcher. It tries to recognize a Unicode character in what you draw.
- You can try to figure out which block the character is in. For example, that weird-looking symbol and that star would be in a block of miscellaneous symbols; characters like
ı are latin letters with modifiers;
∉ is a mathematical symbol, and so on.
- You can try to think of a word in the description of the character and look for it in a list of unicode symbol names and descriptions. Gucharmap or Kcharselect can help.
P.S. On Shapecatcher, I got U+2234 THEREFORE for
∴, U+2192 RIGHTWARDS ARROW for
→, U+263F MERCURY for
☿ and U+2605 BLACK STAR for
In a bash script, up to bash 4.1, you can write a byte by its code point, but not a character. If you want to avoid non-ASCII characters to make your
.bashrc resilient to reencodings, you'll need to enter the bytes corresponding to these characters in the UTF-8 encoding. You can see the hexidecimal values by running
echo ∴ → ☿ ★ | hexdump -C in a UTF-8 terminal, e.g.
→ is encoded by
\xe2\x88\xb4 in UTF-8.
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\\]'
Since bash 4.2, you can use
\u followed by 4 hexadecimal digits in a
PS1=$'\\[\e[31m\\]\u2234\\[\e[0m\\]\n\u2192 \u263f \\~ \\[\e[31m\\]\u2605 $? \\[\e[0m\\]'