How can I configure the color of 'ls' directory under zsh
Solution 1:
Assuming you are using GNU ls
, you can specify the colors with the environment variable LS_COLORS (note that this is a GNU ls
feature and not specific to zsh).
GNU Coreutils has a program called dircolors
to help you convert an easy to edit configuration file into a proper (complicated) LS_COLORS variable. See man dircolors
for the command, and man dir_colors
for the configuration file syntax.
You can
- use
dircolors --print-database >! dircolors.default
to save the defaults (it contains some explanation text) and then modify it. - Google for fancy pre-configured dircolors files (such as this https://github.com/seebi/dircolors-solarized (I've got no relation to this)).
Once done, you'll need dircolors
to turn that into a proper LS_COLORS. Note that dircolors
outputs in bash and csh formats, for zsh
you should use the bash
-formatted output.
PS: Use ls --color=auto
instead of ls --color=tty
.
Solution 2:
The following works for me in zsh 5.7.1 (x86_64-apple-darwin19.0)).
These lines in my .zshrc without any additional incantations configure the colours for ls:
export CLICOLOR=1
export LSCOLORS=ExGxBxDxCxEgEdxbxgxcxd
alias ll="ls -alG"
For the configuration options you can use in LSCOLORS you can simply run man ls
and find the section for LSCOLORS. CLICOLOR is explained there as well.