The colours are set by ls
, using the LS_COLORS
environment variable. To change the colours, you can use dircolors
.
dircolors --print-database
outputs the current source settings, which you can store in a file and adapt; then
dircolors ${file}
will output the processed LS_COLORS
value for you using the settings in ${file}
.
Strictly speaking ls
outputs colour codes, and these are mapped to colours by the terminal; there's a more-or-less standard palette (see Wikipedia for details) but there are slight differences from one terminal to another. So you can change the codes ls
outputs using dircolors
, and you can often adjust the terminal's palette as well, but that would affect all colour-using programs you'd run in the terminal.
As to the design, I suppose the default colours are those the ls
maintainers like...