Enabling Terminal’s directory and file color highlighting in Mac OS X
Author: willem In: apple, bash scripting, productivity, tips & tricks, tools, unixBy default Mac OS X’s Terminal application uses the Bash shell (Bourne Again SHell) but doesn’t have directory and file color highlighting enabled to indicate resource types and permissions settings.

Enabling directory and file color highlighting requires that you open (or create) ~/.bash_profile in your favourite text editor, add these contents:
export CLICOLOR=1 export LSCOLORS=ExFxCxDxBxegedabagacad
… save the file and open a new Terminal window (shell session). Any variant of the “ls” command:
ls ls -l ls -la ls -lah
… will then display its output in color.
More details on the LSCOLORS variable can be found by looking at the man page for “ls“:
man ls
LSCOLORS needs 11 sets of letters indicating foreground and background colors:
- directory
- symbolic link
- socket
- pipe
- executable
- block special
- character special
- executable with setuid bit set
- executable with setgid bit set
- directory writable to others, with sticky bit
- directory writable to others, without sticky bit
The possible letters to use are:
a black b red c green d brown e blue f magenta c cyan h light grey A block black, usually shows up as dark grey B bold red C bold green D bold brown, usually shows up as yellow E bold blue F bold magenta G bold cyan H bold light grey; looks like bright white x default foreground or background
By referencing these values, the LSCOLORS variable setting mentioned above translates to:
Bold blue with default background for directories, bold magenta with default background for symbolic links, bold green with default background for sockets, etc.
Related posts:
Like this post? Subscribe to the Geekology RSS 2.0 feed!












Anon
April 15th, 2009 at 19:27
Yo, thanks for this explanation. There are a few other blogs out there that try to explain the color scheme, but none of them cover what the line “ExFxCxDxBxegedabagacad” means, or how to change the colors of particular items. Thanks again, you saved a newbie some hard work.
willem
April 15th, 2009 at 20:43
Sure thing! Let me know if you get stuck with anything else.
Alpha01
April 19th, 2009 at 10:12
Awesome post!!!
willem
April 19th, 2009 at 12:17
Thanks, and thank you for the link! Do you use both Mac OS X and Linux, or just one of them?
guido
May 6th, 2009 at 21:10
Indeed an awesome post. Works like a charm, thanks.
Kevin McDonagh
May 24th, 2009 at 13:14
Thanks, quick fix. I always set up the colours in the shell but the colour values always differ from one env/shell to the next.
Dave
June 29th, 2009 at 04:30
Thanks. Worked perfectly!
Jason Russell
July 1st, 2009 at 03:21
Thanks Willem! You definitely saved me some time!
It never occurred to me to check the man pages for coloring. I’m relatively new to Macs, and I noticed that the man pages on the Macs appear to be more straightforward with these particular instructions compared to a system running RHEL5…
willem
July 1st, 2009 at 13:33
Hey Jason
Sure! OS X is based on BSD and inherited many of its man pages from there.
laura
November 12th, 2009 at 19:29
yes, thanks very helpfull, but I would have an other issue related to this:
there’s a way even to chose the colors for other file extensions:
i would like to have the .pdf in a color and the .txt or .tex in one other. someone know if this is possible?
thanks a lot
laura
Sumeet
January 15th, 2010 at 21:33
Is there a way I can use colors to distinguish between file extensions? For instance, I use C and Matlab extensively, and it would be nice if my .c and .m files were shown in two different colors.
Thanks!
shriv
January 17th, 2010 at 12:08
Thanks a lot!!! Works like a charm!
bash settings on Mac Snow Leopard | semioticpixels scratch pad
January 21st, 2010 at 11:52
[...] adding file and directory colors to Terminal VN:F [1.8.1_1037]please wait…Rating: 0.0/10 (0 votes cast)VN:F [1.8.1_1037]Rating: 0 (from 0 votes) [...]