Search code examples
bashshellunicodecharacter-encoding

How do you echo a 4-digit Unicode character in Bash?


I'd like to add the Unicode skull and crossbones to my shell prompt (specifically the 'SKULL AND CROSSBONES' (U+2620)), but I can't figure out the magic incantation to make echo spit it, or any other, 4-digit Unicode character. Two-digit one's are easy. For example, echo -e "\x55", .

In addition to the answers below it should be noted that, obviously, your terminal needs to support Unicode for the output to be what you expect. gnome-terminal does a good job of this, but it isn't necessarily turned on by default.

On macOS's Terminal app Go to Preferences-> Encodings and choose Unicode (UTF-8).


Solution

  • In UTF-8 it's actually 6 digits (or 3 bytes).

    $ printf '\xE2\x98\xA0'
    ☠
    

    To check how it's encoded by the console, use hexdump:

    $ printf ☠ | hexdump
    0000000 98e2 00a0                              
    0000003