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?
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems. It only takes a minute to sign up.
Sign up to join this communityYou 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\\]'
PS1=$'\u2234\u2192\u263f\u2605'
feels easier to maintain :-)
bash --version GNU bash, version 4.2.46(2)-release (x86_64-redhat-linux-gnu)
, and locale
shows LC_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...
Feb 15, 2018 at 15:09
\uNNNN
syntax is a feature of $'…'
quoting, not of prompt expansion. The value of PS1
must contain the Unicode character. $'\u1234'
is a way to put the Unicode character into a string.
Feb 15, 2018 at 17:37
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: