I just ran across a screenshot of someone's terminal:

Screenshot of a session showing a prompt with an asterisk and arrow

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?


3 Answers 3


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 Ǫ and ı 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 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\\]'

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\\]'
  • Also, you could do : PS1=$'\u2234\u2192\u263f\u2605' feels easier to maintain :-)
    – mat
    Mar 20, 2013 at 11:14
  • @mat Indeed, thanks (but only since bash 4.2). Mar 20, 2013 at 11:40
  • Bach get the calculation for char width wrong for multi byte characters. There is, I think, a way to fix this, but I can not remember. Jan 19, 2017 at 17:34
  • I have 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...
    – WesternGun
    Feb 15, 2018 at 15:09
  • 2
    @FaithReaper The \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:

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.