Ask Ubuntu is a question and answer site for Ubuntu users and developers. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

What do the different colours in Ubuntu's terminal mean? For example, when I type the ls command in one of my folders, I get one of the files in light green, the other (which is a folder) in blue with green high lighting.

What do those colours mean, and there is any manual about all the colours?

share|improve this question
up vote 164 down vote accepted
  • Blue: Directory
  • Green: Executable or recognized data file
  • Sky Blue: Linked file
  • Yellow with black background: Device
  • Pink: Graphic image file
  • Red: Archive file

For your Information:

  • To turn the color off, you have to comment out the following lines in .bashrc.

    # enable color support of ls and also add handy aliases
    #if [ -x /usr/bin/dircolors ]; then
    #    test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
    #    alias ls='ls --color=auto'
    #    #alias dir='dir --color=auto'
    #    #alias vdir='vdir --color=auto'
    #    alias grep='grep --color=auto'
    #    alias fgrep='fgrep --color=auto'
    #    alias egrep='egrep --color=auto'

    alt text

  • Also if you want to see your own bash color meanings,then copy/paste the following codes in your terminal.

    eval $(echo "no:global default;fi:normal file;di:directory;ln:symbolic link;pi:named pipe;so:socket;do:door;bd:block device;cd:character device;or:orphan symlink;mi:missing file;su:set uid;sg:set gid;tw:sticky other writable;ow:other writable;st:sticky;ex:executable;"|sed -e 's/:/="/g; s/\;/"\n/g')           
      for i in $LS_COLORS     
        echo -e "\e[${i#*=}m$( x=${i%=*}; [ "${!x}" ] && echo "${!x}" || echo "$x" )\e[m" 

    alt text


share|improve this answer
That eval script showing the output color representation for each type is brilliant... thanks! – Russ Jul 27 '11 at 22:00
Pure sourcery ;) – Homunculus Reticulli Aug 4 '15 at 13:30

You can find out what colours ls uses by looking at the $LS_COLORS variable:

  • Turquoise: audio files1
  • Bright Red: Archives and compressed files2
  • Purple: images and videos3

In addition, files are colourised by attributes:

alt text

  1. aac, au, flac, mid, midi, mka, mp3, mpc, ogg, ra, wav, axa, oga, spx, xspf.

  2. tar, tgz, arj, taz, lzh, lzma, tlz, txz, zip, z, Z, dz, gz, lz, xz, bz2, bz, tbz, tbz2, tz, deb, rpm, jar, rar, ace, zoo, cpio, 7z, rz.

  3. jpg, jpeg, gif, bmp, pbm, pgm, ppm, tga, xbm, xpm, tif, tiff, png, svg, svgz, mng, pcx, mov, mpg, mpeg, m2v, mkv, ogm, mp4, m4v, mp4v, vob, qt, nuv, wmv, asf, rm, rmvb, flc, avi, fli, flv, gl, dl, xcf, xwd, yuv, cgm, emf, axv, anx, ogv, ogx.

All this information is contained in the output of dircolors --print-database, but its formatting is rather unreadable.

Here's a technical explanation of what's happening:


CHR 40;33;01

The colour code consists of three parts:

  • The first part before the semicolon represents the text style.

    • 00=none, 01=bold, 04=underscore, 05=blink, 07=reverse, 08=concealed.
  • The second and third part are the colour and the background color:

    • 30=black, 31=red, 32=green, 33=yellow, 34=blue, 35=magenta, 36=cyan, 37=white.

Each part can be omitted, assuming starting on the left. i.e. "01" means bold, "01;31" means bold and red. And you would get your terminal to print in colour by escaping the instruction with \33[ and ending it with an m. 33, or 1B in hexadecimal, is the ASCII sign "ESCAPE" (a special character in the ASCII character set). Example:

"\33[1;31mHello World\33[m"

Prints "Hello World" in bright red.

The command ls with the argument --color=auto (on Ubuntu, ls is an alias for ls --color=auto) goes through all the file names and tries first to match different types, like Executable, Pipe and so on. It then tries to match regular expressions like *.wav and prints the resulting filename, enclosed in these colour-changing instructions for bash.

share|improve this answer
Thanks! I was looking at a Git topology visualization question and wondered why some of the characters were being printed. – pdp Jul 4 '15 at 8:11

If you type dircolors (echo $LS_COLORS also works) from command line you will get a list of codes and colors for lots of filetypes in 1 line. dircolors --print-database shows them 1 line at a time. Here is a short list (I tried to put in the most important ones). At the bottom there is an explanation about what the different codes at the end of each lines represents:

NORMAL 00 # global default, although everything should be something.
FILE 00 # normal file
DIR 01;34 # directory
LINK 01;36 # symbolic link. (If you set this to 'target' instead of a
 # numerical value, the color is as for the file pointed to.)
FIFO 40;33 # pipe
SOCK 01;35 # socket
DOOR 01;35 # door
BLK 40;33;01 # block device driver
CHR 40;33;01 # character device driver
ORPHAN 40;31;01 # symlink to nonexistent file, or non-stat'able file
SETUID 37;41 # file that is setuid (u+s)
SETGID 30;43 # file that is setgid (g+s)
STICKY_OTHER_WRITABLE 30;42 # dir that is sticky and other-writable (+t,o+w)
OTHER_WRITABLE 34;42 # dir that is other-writable (o+w) and not sticky
STICKY 37;44 # dir with the sticky bit set (+t) and not other-writable
# archives or compressed (bright red)
.tar 01;31
.tgz 01;31
# image formats
.jpg 01;35
.jpeg 01;35
.gif 01;35
.bmp 01;35
# audio formats
.aac 00;36
.flac 00;36
.ogg 00;36
  • Attribute codes: 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed
  • Text color codes: 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white
  • Background color codes: 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white

If you want to play around with this here is an example on how to set a color for a file:

export LS_COLORS=$LS_COLORS:"*.ogg=01;35":"*.mp3=01;35"  

This will set *.ogg and .mp3 to bold magenta. And if you put it in your .bashrc file it will become permanent.

share|improve this answer
Hey maybe someone else comes with a better answer. Btw you got me over 15k with this upvote ;) – Rinzwind Sep 14 '11 at 8:29
rock on! You got yourself there... Thanks again though, I did a /"string" to search up on some of the colors I was unsure about – user784637 Sep 14 '11 at 8:38
This (excellent) answer was merged, in case you're wondering about the dates. :-) – Stefano Palazzo Sep 14 '11 at 10:06
@Rinzwind, so to set a color for pdf file, the process is to use export? Is it possible to simply add one extension in the default LS_COLORS variable? – Sigur Jan 28 at 18:14

None of the answers here include the 256 color options in the latest versions of Ubuntu. I'm color deficient (some colors give me trouble near each other) so the default blue directory on black is real hard for me to read. What follows is my research to change that.

Type dircolors -p |less to see your current color code.

The default .bashrc should already be configured not only to take advantage of the system color code, but also one in ~/.dircolors so dump the dircolors output to .dircolor so you can start with that using this command. dircolors -p > ~/.dircolors

Alternative: pick up a very similar 256 color dircolors from seebi's solarized project.

Grab this colortest script and run it with the command colortest -w so you can see all the colors at once. Choose a color. I like the orange #208. I want that to be the text color so using this info on extended color codes, I can apply that.

So you have a color, now what. First we have to create the string.

The first number will be an attribute code, most likely 00, but if you want it to blink go with 05:

Pick an attribute code: 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed

Next pick append ;38;5; to that attribute code to indicate your text color to get 00;38;5; and then append your color. I picked 208 so I get 00;38;5;208.

If you want to also put a background on it, pick another color (let's say 56) with the colortest script and the append ;48;5; for the background and 56 for the color to get a total string of 00;38;5;208;48;5;56.

So now you have it, what do you do with it?

vim ~/.dircolors and find the section you want to change (for me that is DIR) to the string we determined above "00;38;5;208".

This won't apply immediately, you'll need to load the config. Use dircolors ~/.dircolors to the get code to set your LS_COLORS variable. You could just paste that into your terminal session or you can close your terminal and reopen it. You could also pipe that into a file and run it as a shell script.

You can do this same procedure with 16 colors. You don't need the special ;38;5 or ;48;5 stuff. Just toss the numbers into the string and enjoy the simplicity.

Thanks to Dan and seebi for their notes and code on this.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

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