FreeBSD: Enable Colorized ls Output

FreeBSD has ls command to list directory contents. You can pass the -G option to the ls command to enable colorized output. For example, type the following command at shell prompt to get colorized output:

$ export TERM=xterm
$ ls -G

You can create an alias (shell alias) as follows:

alias ls='ls รขโ‚ฌโ€œG'

You can store ls alias into ~/.bash_profile or ~/.profile or ~/.zshrc file. You may need to change the TERM variable to xterm-color, enter:

export TERM=xterm-color


export TERM=xterm

Again, put above commands in your shell profile file such as ~/.bash_profile or ~/.profile file.

More about LSCOLORS

The shell variable LSCOLORS 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. To customize color you need modify LSCOLORS variable and other stuff. From the ls command man page:

                     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

                     The default is "exfxcxdxbxegedabagacad", i.e., blue fore-
                     ground and default background for regular directories,
                     black foreground and red background for setuid executa-
                     bles, etc.

๐Ÿง Get the latest tutorials on Linux, Open Source & DevOps via RSS feed or Weekly email newsletter.

๐Ÿง 4 comments so far... add one
CategoryList of Unix and Linux commands
Disk space analyzersncdu pydf
File Managementcat
FirewallAlpine Awall CentOS 8 OpenSUSE RHEL 8 Ubuntu 16.04 Ubuntu 18.04 Ubuntu 20.04
Network UtilitiesNetHogs dig host ip nmap
OpenVPNCentOS 7 CentOS 8 Debian 10 Debian 8/9 Ubuntu 18.04 Ubuntu 20.04
Package Managerapk apt
Processes Managementbg chroot cron disown fg jobs killall kill pidof pstree pwdx time
Searchinggrep whereis which
User Informationgroups id lastcomm last lid/libuser-lid logname members users whoami who w
WireGuard VPNAlpine CentOS 8 Debian 10 Firewall Ubuntu 20.04
4 comments… add one
  • Arun Nov 16, 2005 @ 19:11

    The LSCOLOR dosent get set when i use the script.

    I have included the script in my etcprofile Still its not working

  • ๐Ÿง nixcraft Nov 16, 2005 @ 22:08

    This script works with BASH shell only. Do you have bash shell installed? Make sure it is your login shell! If so then make sure is called as follows from file /etc/profile or even from your ~/.bash_profile

    . /path/to/

  • Eduardo May 18, 2014 @ 11:34

    These hints above are very useful. Thanks for them. I could manage LSCOLORS without problems when I typed “ll *”, but when I added a pipe “ll * | more”, colors have disappeared. I do not know why it does not working when a pipe is added. Please, could you help me?

  • jeffb Nov 26, 2014 @ 6:07

    Why don’t we just go to /usr/src/bin/ls and modify ls.c so that it always setenv(“CLICOLOR”, “”, 1); ?

Leave a Reply

Your email address will not be published.

Use HTML <pre>...</pre> for code samples. Still have questions? Post it on our forum