Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

I specifically use bash on Mac OS X, but I think the answer would be Unix-generic.

I'm already using ANSI colors, but I'd like to reassign different colors to folders, hidden files, etc.

Update: This wasn't as useful as I expected, as you can't assign a specific color to hidden files, and also directories can't always be colored the same, as the sticky permission bits color takes precedence over directories (olive green in the screenshot)

share|improve this question
    
I just edited my answer to add "export CLICOLOR=1". This is needed for some terminals. –  dennis.hempler Apr 29 '12 at 14:39

2 Answers 2

up vote 4 down vote accepted

Modify your ~/.profile with the following. You could also put this in your ~/.bashrc or ~/.bash_profile depending on what you already have and use. NOTE: this shows the default color setup. Change the first e to a B if you want to see red directories.

    LSCOLORS=exfxcxdxbxegedabagacad

    export LSCOLORS

    export CLICOLOR=1    

Save your ~/.profile and then do a:

    . .profile

From the command line.

Here are the different color settings and order of attributes from the ls man page:

LSCOLORS        The value of this variable describes what color to use for which attribute when colors are enabled with CLICOLOR.  This string is a
                 concatenation of pairs of the format fb, where f is the foreground color and b is the background color.
                 The color designators are as follows:

                       a     black
                       b     red
                       c     green
                       d     brown
                       e     blue
                       f     magenta
                       g     cyan
                       h     light grey
                       A     bold 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

                 Note that the above are standard ANSI colors.  The actual display may differ depending on the color capabilities of the terminal in
                 use.

                 The order of the attributes are as follows:

                       1.   directory
                       2.   symbolic link
                       3.   socket
                       4.   pipe
                       5.   executable
                       6.   block special
                       7.   character special
                       8.   executable with setuid bit set
                       9.   executable with setgid bit set
                       10.  directory writable to others, with sticky bit
                       11.  directory writable to others, without sticky bit

                 The default is "exfxcxdxbxegedabagacad", i.e. blue foreground and default background for regular directories, black foreground and red
                 background for setuid executables, etc.
share|improve this answer
    
Fantastic! This was super helpful. –  James Tomasino Oct 1 '12 at 17:41

The dircolors(1) command lets you generate a command that you can evaluate in your shell startup script to set the environment variable LS_COLORS, which tells /bin/ls how to color its output. Details are available at http://linux.die.net/man/5/dir_colors.

share|improve this answer
    
I like your avatar. –  paradroid Apr 29 '12 at 14:52
    
Oops. I wasn't purposely trying to copy anyone's avatar. –  Fran May 1 '12 at 18:42

Your Answer

 
discard

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.