The program ls(1) uses the environment variable LS_COLORS
to
determine the colors in which the filenames are to be displayed.
This environment variable is usually set by a command like
eval `dircolors some_path/dir_colors`
found in a system default shell initialization file, like
/etc/profile or /etc/csh.cshrc. (See also dircolors(1).)
Usually, the file used here is /etc/DIR_COLORS and can be
overridden by a .dir_colors file in one's home directory.
This configuration file consists of several statements, one per
line. Anything right of a hash mark (#) is treated as a comment,
if the hash mark is at the beginning of a line or is preceded by
at least one whitespace. Blank lines are ignored.
The global section of the file consists of any statement before
the first TERM
statement. Any statement in the global section of
the file is considered valid for all terminal types. Following
the global section is one or more terminal-specific sections,
preceded by one or more TERM
statements which specify the
terminal types (as given by the TERM
environment variable) the
following declarations apply to. It is always possible to
override a global declaration by a subsequent terminal-specific
one.
The following statements are recognized; case is insignificant:
TERM
terminal-type
Starts a terminal-specific section and specifies which
terminal it applies to. Multiple TERM
statements can be
used to create a section which applies for several
terminal types.
COLOR yes|all|no|none|tty
(Slackware only; ignored by GNU dircolors(1).) Specifies
that colorization should always be enabled (yes or all),
never enabled (no or none), or enabled only if the output
is a terminal (tty). The default is no.
EIGHTBIT yes|no
(Slackware only; ignored by GNU dircolors(1).) Specifies
that eight-bit ISO 8859 characters should be enabled by
default. For compatibility reasons, this can also be
specified as 1 for yes or 0 for no. The default is no.
OPTIONS
options
(Slackware only; ignored by GNU dircolors(1).) Adds
command-line options to the default ls
command line. The
options can be any valid ls
command-line options, and
should include the leading minus sign. Note that
dircolors
does not verify the validity of these options.
NORMAL
color-sequence
Specifies the color used for normal (nonfilename) text.
Synonym: NORM
.
FILE
color-sequence
Specifies the color used for a regular file.
DIR
color-sequence
Specifies the color used for directories.
LINK
color-sequence
Specifies the color used for a symbolic link.
Synonyms: LNK
, SYMLINK
.
ORPHAN
color-sequence
Specifies the color used for an orphaned symbolic link
(one which points to a nonexistent file). If this is
unspecified, ls
will use the LINK
color instead.
MISSING
color-sequence
Specifies the color used for a missing file (a nonexistent
file which nevertheless has a symbolic link pointing to
it). If this is unspecified, ls
will use the FILE
color
instead.
FIFO
color-sequence
Specifies the color used for a FIFO (named pipe).
Synonym: PIPE
.
SOCK
color-sequence
Specifies the color used for a socket.
DOOR
color-sequence
(Supported since fileutils 4.1) Specifies the color used
for a door (Solaris 2.5 and later).
BLK
color-sequence
Specifies the color used for a block device special file.
Synonym: BLOCK
.
CHR
color-sequence
Specifies the color used for a character device special
file.
Synonym: CHAR
.
EXEC
color-sequence
Specifies the color used for a file with the executable
attribute set.
SUID
color-sequence
Specifies the color used for a file with the set-user-ID
attribute set.
Synonym: SETUID
.
SGID
color-sequence
Specifies the color used for a file with the set-group-ID
attribute set.
Synonym: SETGID
.
STICKY
color-sequence
Specifies the color used for a directory with the sticky
attribute set.
STICKY_OTHER_WRITABLE
color-sequence
Specifies the color used for an other-writable directory
with the executable attribute set.
Synonym: OWT
.
OTHER_WRITABLE
color-sequence
Specifies the color used for an other-writable directory
without the executable attribute set.
Synonym: OWR
.
LEFTCODE
color-sequence
Specifies the left code for non-ISO 6429 terminals (see
below).
Synonym: LEFT
.
RIGHTCODE
color-sequence
Specifies the right code for non-ISO 6429 terminals (see
below).
Synonym: RIGHT
.
ENDCODE
color-sequence
Specifies the end code for non-ISO 6429 terminals (see
below).
Synonym: END
.
*
extension color-sequence
Specifies the color used for any file that ends in
extension.
.
extension color-sequence
Same as *
.extension. Specifies the color used for any
file that ends in .extension. Note that the period is
included in the extension, which makes it impossible to
specify an extension not starting with a period, such as ~
for emacs
backup files. This form should be considered
obsolete.
ISO 6429 (ANSI) color sequences
Most color-capable ASCII terminals today use ISO 6429 (ANSI)
color sequences, and many common terminals without color
capability, including xterm
and the widely used and cloned DEC
VT100, will recognize ISO 6429 color codes and harmlessly
eliminate them from the output or emulate them. ls
uses ISO 6429
codes by default, assuming colorization is enabled.
ISO 6429 color sequences are composed of sequences of numbers
separated by semicolons. The most common codes are:
0 to restore default color
1 for brighter colors
4 for underlined text
5 for flashing text
30 for black foreground
31 for red foreground
32 for green foreground
33 for yellow (or brown) foreground
34 for blue foreground
35 for purple foreground
36 for cyan foreground
37 for white (or gray) foreground
40 for black background
41 for red background
42 for green background
43 for yellow (or brown) background
44 for blue background
45 for purple background
46 for cyan background
47 for white (or gray) background
Not all commands will work on all systems or display devices.
ls
uses the following defaults:
NORMAL
0 Normal (nonfilename) text
FILE
0 Regular file
DIR
32 Directory
LINK
36 Symbolic link
ORPHAN
undefined Orphaned symbolic link
MISSING
undefined Missing file
FIFO
31 Named pipe (FIFO)
SOCK
33 Socket
BLK
44;37 Block device
CHR
44;37 Character device
EXEC
35 Executable file
A few terminal programs do not recognize the default properly.
If all text gets colorized after you do a directory listing,
change the NORMAL
and FILE
codes to the numerical codes for your
normal foreground and background colors.
Other terminal types (advanced configuration)
If you have a color-capable (or otherwise highlighting) terminal
(or printer!) which uses a different set of codes, you can still
generate a suitable setup. To do so, you will have to use the
LEFTCODE
, RIGHTCODE
, and ENDCODE
definitions.
When writing out a filename, ls
generates the following output
sequence: LEFTCODE
typecode RIGHTCODE
filename ENDCODE
, where the
typecode is the color sequence that depends on the type or name
of file. If the ENDCODE
is undefined, the sequence LEFTCODE
NORMAL RIGHTCODE
will be used instead. The purpose of the left-
and rightcodes is merely to reduce the amount of typing necessary
(and to hide ugly escape codes away from the user). If they are
not appropriate for your terminal, you can eliminate them by
specifying the respective keyword on a line by itself.
NOTE:
If the ENDCODE
is defined in the global section of the
setup file, it cannot be undefined in a terminal-specific section
of the file. This means any NORMAL
definition will have no
effect. A different ENDCODE
can, however, be specified, which
would have the same effect.
Escape sequences
To specify control- or blank characters in the color sequences or
filename extensions, either C-style \-escaped notation or
stty
-style ^-notation can be used. The C-style notation includes
the following characters:
\a
Bell (ASCII 7)
\b
Backspace (ASCII 8)
\e
Escape (ASCII 27)
\f
Form feed (ASCII 12)
\n
Newline (ASCII 10)
\r
Carriage Return (ASCII 13)
\t
Tab (ASCII 9)
\v
Vertical Tab (ASCII 11)
\?
Delete (ASCII 127)
\
nnn Any character (octal notation)
\x
nnn Any character (hexadecimal notation)
\_
Space
\\
Backslash (\)
\^
Caret (^)
\#
Hash mark (#)
Note that escapes are necessary to enter a space, backslash,
caret, or any control character anywhere in the string, as well
as a hash mark as the first character.