Isso tem pouco a ver com zsh
. zsh
suporta a conclusão colorida como o GNU ls
(com coisas como azul para diretórios, verde para executáveis ...), e suporta as mesmas diretivas de configuração GNU ls
faz.
A configuração de cores GNU ls
é feita através da variável de ambiente LS_COLORS
. Quando essa variável contém ln=01;36
, isso significa que links simbólicos devem ser renderizados em negrito ciano ( 36
sendo o código de cor ANSI para primeiro plano ciano e 01
sendo negrito).
Em zsh
, você pode fazer o mesmo com:
zstyle ':completion:*' list-colors 'ln=01;36'
E, na verdade, você geralmente configura a conclusão colorida zsh
com:
zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS}
Então, zsh
cores são completadas da mesma forma que o GNU ls faz.
Para facilitar a gravação do conteúdo da variável LS_COLORS
, o GNU ls
vem com o comando dircolors
. Esse comando recebe como entrada um arquivo de configuração com um conteúdo mais detalhado (já que os arquivos de configuração não possuem restrições de espaço como as variáveis de ambiente) e gera o conteúdo correspondente da variável LS_COLORS
adequada ao seu terminal.
Acima temos:
LINK 01;38;5;37
01
ainda está em negrito, mas 38;5;37
é a especificação para modos de cor estendidos para terminais como xterm
que suportam 88 ou 256 cores.
Essa é a cor de primeiro plano 37, que é um pouco de ciano ( rgb:00/af/af
) ligeiramente mais escuro que a cor padrão para a cor ANSI 6 ( cyan3
pelo menos com meu xterm
, que aqui é rgb:00/cd/cd
). / p>
~$ tput setaf 37 | sed l
3[38;5;37m$
Quando passado por dircolors
, isso se torna ln=38;5;37
.
Há também MULTIHARDLINK 00
, que diz que os arquivos com mais de um link físico devem ser renderizados com a cor padrão. Isso seria traduzido para mh=00
em $LS_COLORS
.
No entanto, isso foi introduzido em uma versão relativamente recente de ls
/ dircolors
. Ela costumava ser HARDLINK
/ hl
, mas foi renomeada para MULTIHARDLINK
/ mh
no coreutils 7.5 em 2009, já que essa foi uma escolha mais correta de texto.
Parece que você tem uma versão mais antiga de dircolors
. Note que zsh
não suporta hl
nem mh
(apesar de não se queixar, simplesmente ignore-o), e como é apenas configurado para as cores padrão, você também pode remover essa linha.
RESET
/ rs
foi adicionado no coreutils 6.11 e não é suportado por zsh
.
CAPABILITY
/ ca
foi adicionado no coreutils 7.0 e não é suportado por zsh
.
Provavelmente, há mais daqueles que não são suportados pelo zsh
(veja info zsh 'The zsh/complist Module'
para detalhes), mas novamente, zsh
apenas ignora o que ele não suporta.
Os erros que você recebe são de dircolors
. Significa apenas que quem escreveu esse arquivo dircolors
tinha uma versão mais nova do coreutils (o conjunto de utilitários GNU incluindo ls
e dircolors
) do que você. Basta remover as linhas que não são suportadas nesse arquivo.