Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do you determine what bash ls colours mean?

When you perform ls in a bash shell, sometimes there are colours to indicate different resource types, and you can enable/control this with the --color argument.

But neither the man page nor Google is providing an answer to the question:

What do these colours indicate by default, and how do I display what the current system uses?


UPDATE:

Thanks everyone for answers so far, however to make it easier to pick a winner, can anyone go a step further and provide a method to output descriptions in the colours they apply to.

Hmmm... my example doesn't work when posted (only when previewed), so if you preview this code it'll show what I mean...

<ul style="list-style:none; background:black; margin:0;padding:0.5em; width:10em">
  <li style="color:blue">directory</li>
  <li style="color:aqua">symbolic link</li>
  <li style="color:#A00000;">*.tar files</li>
  <li style="color:white">...</li>
</ul>

Thanks.

like image 931
Peter Boughton Avatar asked Feb 28 '09 14:02

Peter Boughton


People also ask

Why does Linux ls results have different colors?

Hence, Linux has specific color codes for different file types to distinguish them from each other for better viewing by the user. As a Linux administrator you don't have to memorize all the color code's, but you do need to remember some color codes that you use on a daily basis.

How do you get color in ls?

You need to pass --color option to the ls command on Linux. If you are using OS X or BSD based system pass -G option to the ls command. The syntax is as follows to turn on or off colors.


3 Answers

The colors are defined by the $LS_COLORS environment variable. Depending on your distro, it is generated automatically when the shell starts, using ~/.dircolors or /etc/DIR_COLORS.

Edit:

To list color meanings, use this script:

eval $(echo "no:global default;fi:normal file;di:directory;ln:symbolic link;pi:named pipe;so:socket;do:door;bd:block device;cd:character device;or:orphan symlink;mi:missing file;su:set uid;sg:set gid;tw:sticky other writable;ow:other writable;st:sticky;ex:executable;"|sed -e 's/:/="/g; s/\;/"\n/g')
{
  IFS=:
  for i in $LS_COLORS
  do
    echo -e "\e[${i#*=}m$( x=${i%=*}; [ "${!x}" ] && echo "${!x}" || echo "$x" )\e[m"
  done
}
like image 198
Juliano Avatar answered Oct 22 '22 13:10

Juliano


Running the command dircolors -p will print all default colour settings. See http://linux.about.com/library/cmd/blcmdl1_dircolors.htm.

like image 34
Mark Davidson Avatar answered Oct 22 '22 12:10

Mark Davidson


You should be able to see the list of mappings in /etc/DIR_COLORS. You can override that by creating .dir_colors in your home directory.

like image 3
chris Avatar answered Oct 22 '22 13:10

chris