I have the following setup in .bashrc for coloring of listings.

export CLICOLOR=1
export LS_COLORS='no=00:fi=00:di=00;34:ln=01;36:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.avi=01;35:*.fli=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.ogg=01;35:*.mp3=01;35:*.wav=01;35:';

This site shows the code for colors, and I want to change the directory color to `light color'. But making di as follows doesn't affect it.

di=04;94

The interesting thing is that even after my commenting out LS_COLORS, I can see colored output as long as I have CLICOLOR=1.

  • What should I do to make directory color to Light blue (94)?
  • What's it for CLICOLOR and LS_COLORS? Why coloring works without LS_COLORS?
up vote 46 down vote accepted

There are several different implementations of color for ls, and you've conflated some of them.

  • On FreeBSD and Mac OS X, ls shows colors if the CLICOLOR environment variable is set or if -G is passed on the command line. The actual colors are configured through the LSCOLORS environment variable (built-in defaults are used if this variable is not set). To show directories in light blue, use

    export LSCOLORS=Exfxcxdxbxegedabagacad
    
  • With GNU ls, e.g. on Linux, ls shows colors if --color is passed on the command line. The actual colors are configured through the LS_COLORS environment variable, which can be set with the dircolors command (built-in defaults are used if this variable is not set).

  • 5
    Thanks for the answer, could you teach me what Exfxcxdxbxegedabagacad means? – prosseek Oct 8 '10 at 18:28
  • @prosseek: See the man pages I've linked to. For example, the first two characters are the foreground and background for directories, e means dark blue, E means light blue, and x means default. f in the third position makes symbolic links magenta, and so on. – Gilles Oct 8 '10 at 18:49
  • On these same line, how do I make tree show colors? Tree shows colors on my Debian machine but does not do so on my Mac. Environment variables are present for color as described above. So my Mac shows colors for any ls commands but not tree. I installed tree with brew. – DanCat Oct 17 '15 at 18:42
  • 2
    @DanCat I don't know. tree and ls are unrelated utilities, there's no reason why settings for one would apply to the other. You should ask that as a separate question. – Gilles Oct 17 '15 at 18:51
  • @DanCat having the same prob in my iterm2 even with tree -C. tried it in Mac terminal (el capitan) as tree -C and that worked. haven't determined the issue in iterm2 yet. – Mike D Oct 1 '16 at 2:59

What's it for CLICOLOR and LS_COLORS? Why coloring works without LS_COLORS?

CLICOLOR will turn colors on or off. LS_COLORS is not required, and will let you customize the colors.

Note that on some operating systems (Like MacOSX and FreeBSD), the value is named LSCOLORS, not LS_COLORS.

I avoid setting the color using LS_COLORS, because then I need to apply that same color scheme on a hundred different computers and 10 different Un*xes. Instead, I modify the color in my Terminal program, which works the same on most Unix hosts.

If you want a wrapper script for ls that works on all systems, abstracting away these color differences etc. see: http://www.pixelbeat.org/scripts/l

Your Answer

 

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

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