Matt Brown – Journeys of a software engineer

April 2, 2009

Colorful ls (dircolors) on a mac console (terminal.app)

Filed under: console, coreutils, ls — Tags: , , — mattbsoftware @ 1:55 am

On linux systems when I listed the contents of a directory (ls) I saw a colorful list. Different colors were used for compressed files, directories, images, etc.


Install GNU coreutils Steps:
  1. Download coreutils (I used v7.2). d/l http://ftp.gnu.org/gnu/coreutils site: http://www.gnu.org/software/coreutils
  2. untar it tar xzvf coreututils-7.2.tar.gz
  3. cd into the coreutils-7.2 directory
  4. ./configure –prefix=/usr
  5. make
  6. make check – (I had 2 test failures, but no problems)
  7. Install all GNU core utils by executing ‘sudo make install’
  8. OR just install ls and dircolors, and leave everything else BSD by copying ls & dircolors from ./src to /usr/bin
Setup bash_profile
  1. edit .bash_profile
  2. add these lines
<code>
#parses .dircolors and makes env var for GNU ls
eval `dircolors`

alias ls=’ls -hF –color=auto’

</code>
Setup .dircolors
————————————-BOF .dircolors
<code>
# Configuration file for dircolors, a utility to help you set the
# LS_COLORS environment variable used by GNU ls with the –color option.

# The keywords COLOR, OPTIONS, and EIGHTBIT (honored by the
# slackware version of dircolors) are recognized but ignored.

# Below, there should be one TERM entry for each termtype that is colorizable
TERM linux
TERM linux-c
TERM mach-color
TERM console
TERM con132x25
TERM con132x30
TERM con132x43
TERM con132x60
TERM con80x25
TERM con80x28
TERM con80x30
TERM con80x43
TERM con80x50
TERM con80x60
TERM xterm
TERM xterm-debian
TERM rxvt
TERM screen
TERM screen-w
TERM vt100

# Below are the color init strings for the basic file types. A color init
# string consists of one or more of the following numeric codes:
# Attribute codes:
# 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed
# Text color codes:
# 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white
# Background color codes:
# 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white
NORMAL 00 # global default, although everything should be something.
FILE 00 # normal file
DIR 01;34 # directory
LINK 01;36 # symbolic link. (If you set this to ‘target’ instead of a
# numerical value, the color is as for the file pointed to.)
FIFO 40;33 # pipe
SOCK 01;35 # socket
DOOR 01;35 # door
BLK 40;33;01 # block device driver
CHR 40;33;01 # character device driver
ORPHAN 40;31;01 # symlink to nonexistent file

# This is for files with execute permission:
EXEC 01;32

# List any file extensions like ‘.gz’ or ‘.tar’ that you would like ls
# to colorize below. Put the extension, a space, and the color init string.
# (and any comments you want to add after a ‘#’)

# If you use DOS-style suffixes, you may want to uncomment the following:
#.cmd 01;32 # executables (bright green)
#.exe 01;32
#.com 01;32
#.btm 01;32
#.bat 01;32

.tar 01;31 # archives or compressed (bright red)
.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
.dmg 01;31

# image formats
.jpg 01;35
.png 01;35
.gif 01;35
.bmp 01;35
.ppm 01;35
.tga 01;35
.xbm 01;35
.xpm 01;35
.tif 01;35
.png 01;35
.mpg 01;35
.avi 01;35
.fli 01;35
.gl 01;35
.dl 01;35

</code>
————————————————EOF .dircolors

All Done, type ls at a console prompt and your golden, or purple(directories), green(executables), etc…

– mattb

PS: Once an Apple update, updated ls, not problems, just remake and reinstall

PPS: A friend reminded me that if you want to keep BSD ls on your mac, you can simply alias ls=’ls- -G’ It is not as configurable that I know, but anything is better than colorless

Advertisements

4 Comments »

  1. good job ! thanks for the info

    Comment by Sami — November 16, 2009 @ 7:14 pm

  2. For colors with BSD ls, you can use the -G option.

    Comment by Will — November 2, 2010 @ 8:27 am

  3. Hi, Matt,
    I’m trying to follow your post but I’m wondering how to you install ls and dircolrs only? What’s the command line to use?

    Thanks,
    James

    Comment by James — April 3, 2013 @ 12:22 am

    • I don’t do the dircolors this way anymore (surrendered to BSD).

      Look at the output of make in the ‘Install GNU coreutils Steps’ section. It should say where it’s building ls & dircolors. cp the files from there to /bin/ls and /bin/dircolors. Make sure to keep the same permissions on ls as the ls you are replacing. dircolors doesn’t exist in BSD so set it’s permissions the same as ls.

      Comment by mattbsoftware — April 7, 2013 @ 1:37 pm


RSS feed for comments on this post. TrackBack URI

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Blog at WordPress.com.

%d bloggers like this: