I just ran across a screenshot of someone's terminal:
Is there a list of all of the characters which can be used in a Bash prompt, or can someone get me the character for the star and the right arrow?
I just ran across a screenshot of someone's terminal:
Is there a list of all of the characters which can be used in a Bash prompt, or can someone get me the character for the star and the right arrow?
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:
Ǫ
and ı
are latin letters with modifiers; ∉
is a mathematical symbol, and so on.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 file encoding changes, 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\\]'
fi
Since bash 4.2, you can use \u
followed by 4 hexadecimal digits in a $'…'
string.
PS1=$'\\[\e[31m\\]\u2234\\[\e[0m\\]\n\u2192 \u263f \\~ \\[\e[31m\\]\u2605 $? \\[\e[0m\\]'
You can find the unicode symbols on lots of sites, like this one: http://panmental.de/symbols/info.htm
You just have to make sure that your term supports UTF-8.
i like using these tools — they have a nice experience, and it's easy to search through:
PS1=$'\u2234\u2192\u263f\u2605'
feels easier to maintain :-) – mat Mar 20 '13 at 11:14bash --version GNU bash, version 4.2.46(2)-release (x86_64-redhat-linux-gnu)
, andlocale
showsLC_CTYPE="en_US.UTF-8"
, but when I want to print\uxxxx
in PS1 string, I got username as output and the unicode character is not recognized... – WesternGun Feb 15 '18 at 15:09\uNNNN
syntax is a feature of$'…'
quoting, not of prompt expansion. The value ofPS1
must contain the Unicode character.$'\u1234'
is a way to put the Unicode character into a string. – Gilles 'SO- stop being evil' Feb 15 '18 at 17:37\uXXXX
with$' '
.... that's why. Thx! – WesternGun Feb 16 '18 at 01:31