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?

3 Answers 3

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

6
  • 8
    Thanks for the answer, could you teach me what Exfxcxdxbxegedabagacad means?
    – prosseek
    Oct 8, 2010 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. Oct 8, 2010 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, 2015 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. Oct 17, 2015 at 18:51
  • 2
    For the lazy folks (like me) here's a LSCOLORS generator geoff.greer.fm/lscolors
    – udondan
    Sep 12, 2018 at 9:05
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.

1
  • I can confirm that MacOS is looking for LSCOLORS. Thanks!
    – Jason L.
    Aug 4 at 18:47
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

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .