58

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?
Stefan Lasiewski
  • 19,754
  • 24
  • 70
  • 85
prosseek
  • 8,558

3 Answers3

65

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).

  • 8
    Thanks for the answer, could you teach me what Exfxcxdxbxegedabagacad means? – prosseek Oct 08 '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 'SO- stop being evil' Oct 08 '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 'SO- stop being evil' 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 01 '16 at 02:59
  • 2
    For the lazy folks (like me) here's a LSCOLORS generator https://geoff.greer.fm/lscolors/ – udondan Sep 12 '18 at 09:05
  • confusingly, you can end up using GNU ls on macOS if you activate a conda env that uses something like GNU coreutiles as a dependency – user5359531 Mar 07 '24 at 18:04
13

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.

Stefan Lasiewski
  • 19,754
  • 24
  • 70
  • 85
6

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