Como altero a cor dos diretórios com ls no console?

Como altero a cor dos diretórios com ls no console?

No meu console, a cor dos diretórios é tão azul que é difícil ler em um fundo escuro.

Como posso alterar as definições de cores de ls?

Responder1

Para alterar as cores do seu diretório, abra seu ~/.bashrcarquivo com seu editor

nano ~/.bashrc

e faça a seguinte entrada no final do arquivo:

LS_COLORS=$LS_COLORS:'di=0;35:' ; export LS_COLORS

Algumas boas opções de cores (neste caso 0;35é roxo) são:

Blue = 34
Green = 32
Light Green = 1;32
Cyan = 36
Red = 31
Purple = 35
Brown = 33
Yellow = 1;33
Bold White = 1;37
Light Grey = 0;37
Black = 30
Dark Grey= 1;30

O primeiro número é o estilo (1=negrito), seguido por um ponto e vírgula, e depois o número real da cor, os estilos (efeitos) possíveis são:

0   = default colour
1   = bold
4   = underlined
5   = flashing text (disabled on some terminals)
7   = reverse field (exchange foreground and background color)
8   = concealed (invisible)

Os possíveis antecedentes:

40  = black background
41  = red background
42  = green background
43  = orange background
44  = blue background
45  = purple background
46  = cyan background
47  = grey background
100 = dark grey background
101 = light red background
102 = light green background
103 = yellow background
104 = light blue background
105 = light purple background
106 = turquoise background
107 = white background

Todas as cores possíveis:

30  = black
31  = red
32  = green
33  = orange
34  = blue
35  = purple
36  = cyan
37  = grey
90  = dark grey
91  = light red
92  = light green
93  = yellow
94  = light blue
95  = light purple
96  = turquoise
97  = white

Eles podem até ser combinados, para que um parâmetro como:

di=1;4;31;42

na sua variável LS_COLORS faria com que os diretórios aparecessem em texto vermelho sublinhado em negrito com um fundo verde!

Para testar todas essas cores e estilos em seu terminal, você pode usar um dos seguintes:

for i in 00{2..8} {0{3,4,9},10}{0..7}
do echo -e "$i \e[0;${i}mSubdermatoglyphic text\e[00m  \e[1;${i}mSubdermatoglyphic text\e[00m"
done

for i in 00{2..8} {0{3,4,9},10}{0..7}
do for j in 0 1
   do echo -e "$j;$i \e[$j;${i}mSubdermatoglyphic text\e[00m"
   done
done

Você também pode alterar outros tipos de arquivos ao usar o comando ls definindo cada tipo com:

bd = (BLOCK, BLK)   Block device (buffered) special file
cd = (CHAR, CHR)    Character device (unbuffered) special file
di = (DIR)  Directory
do = (DOOR) [Door][1]
ex = (EXEC) Executable file (ie. has 'x' set in permissions)
fi = (FILE) Normal file
ln = (SYMLINK, LINK, LNK)   Symbolic link. If you set this to ‘target’ instead of a numerical value, the color is as for the file pointed to.
mi = (MISSING)  Non-existent file pointed to by a symbolic link (visible when you type ls -l)
no = (NORMAL, NORM) Normal (non-filename) text. Global default, although everything should be something
or = (ORPHAN)   Symbolic link pointing to an orphaned non-existent file
ow = (OTHER_WRITABLE)   Directory that is other-writable (o+w) and not sticky
pi = (FIFO, PIPE)   Named pipe (fifo file)
sg = (SETGID)   File that is setgid (g+s)
so = (SOCK) Socket file
st = (STICKY)   Directory with the sticky bit set (+t) and not other-writable
su = (SETUID)   File that is setuid (u+s)
tw = (STICKY_OTHER_WRITABLE)    Directory that is sticky and other-writable (+t,o+w)
*.extension =   Every file using this extension e.g. *.rpm = files with the ending .rpm

Uma lista mais completa está disponível emBigsoft - Configurando LS_COLORS.

Em algumas distribuições, você também pode querer alterar a cor de fundo de ow"( OTHER_WRITABLE) cujo padrão é não legível", por exemplo, para texto azul sem negrito sobre fundo verde.

Você pode usar, por exemplo, LS_COLORS="$LS_COLORS:di=1;33"no final do .bashrcarquivo, para obter um texto laranja em negrito e legível sobre fundo preto.

Depois de alterar seu arquivo .bashrc, para colocar as alterações em vigor, você terá que reiniciar seu shell ou executar source ~/.bashrc.

Nota: Você pode combinar mais comandos com umcólon, por exemplo

LS_COLORS=$LS_COLORS:'di=1;33:ln=36' ; export LS_COLORS; ls

Fonte:

Responder2

Muito simples. Adicione estas três linhas a ~/.bashrc

$ vi ~/.bashrc
export LS_OPTIONS='--color=auto'
eval "$(dircolors -b)"
alias ls='ls $LS_OPTIONS'

Se você deseja aplicar as alterações em uma sessão bash em execução, execute:

source ~/.bashrc

Responder3

Seguindo a resposta de Hegazi, você pode controlar a cor do diretório e muitas outras cores usando o comando dircolors. Você pode criar um arquivo de configuração bem documentado.

Você pode criar um arquivo .dircolor em seu diretório inicial da seguinte maneira:

dircolors -p > ~/.dircolors

Então, no seu arquivo ~/.bashrc, adicione as linhas

eval "`dircolors -b ~/.dircolors`"
alias ls='ls --color=auto'

Isso criará uma variável $LS_COLORS para o bash. O sinalizador -c será definido para csh. Ele também sinaliza o comando ls para exibição em cores.

Edite o valor do atributo DIR como acima na cor do arquivo ~/.dircolor para alterar a cor do diretório (ou qualquer um dos outros tipos de arquivo incluídos para outras cores). Você também pode alterar as cores de arquivos específicos ou definir as suas próprias.

Responder4

LS_COLORS

Esta é uma coleção de mapeamentos extension:color, adequados para usar como sua variável de ambiente LS COLORS.

informação relacionada