dircolors no zsh: Palavras-chave não reconhecidas: MULTIHARDLINK, RESET & CAPABILITY

3

Estou tentando obter o tema colorido solarizado para trabalhar no meu terminal. Eu li as instruções aqui , mas eu recebo o seguinte erro dircolors:

dircolors: '/home/avazquez/.dircolors_zsh':90: unrecognized keyword RESET
dircolors: '/home/avazquez/.dircolors_zsh':94: unrecognized keyword MULTIHARDLINK
dircolors: '/home/avazquez/.dircolors_zsh':103: unrecognized keyword CAPABILITY

ao executar:

if [ -x /usr/bin/dircolors ]; then
    test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
fi

do meu .zshrc no zsh (versão mais recente) (que eu acesso remotamente ssh -X do gnome-terminal no Ubuntu).

O caminho para o arquivo .dircolors em questão é aqui e o problema linhas parecem ser algumas das definições de arquivos especiais:

## Special files

NORMAL 00;38;5;244 # no color code at all
#FILE 00 # regular file: use no color at all
RESET 0 # reset to "normal" color
DIR 00;38;5;33 # directory 01;34
LINK 01;38;5;37 # symbolic link. (If you set this to 'target' instead of a
 # numerical value, the color is as for the file pointed to.)
MULTIHARDLINK 00 # regular file with more than one link
FIFO 48;5;230;38;5;136;01 # pipe
SOCK 48;5;230;38;5;136;01 # socket
DOOR 48;5;230;38;5;136;01 # door
BLK 48;5;230;38;5;244;01 # block device driver
CHR 48;5;230;38;5;244;01 # character device driver
ORPHAN 48;5;235;38;5;160 # symlink to nonexistent file, or non-stat'able file
SETUID 48;5;160;38;5;230 # file that is setuid (u+s)
SETGID 48;5;136;38;5;230 # file that is setgid (g+s)
CAPABILITY 30;41 # file with capability
STICKY_OTHER_WRITABLE 48;5;64;38;5;230 # dir that is sticky and other-writable (+t,o+w)
OTHER_WRITABLE 48;5;235;38;5;33 # dir that is other-writable (o+w) and not sticky
STICKY 48;5;33;38;5;230 # dir with the sticky bit set (+t) and not other-writable
# This is for files with execute permission:
EXEC 01;38;5;64
    
por Amelio Vazquez-Reina 31.03.2013 / 19:37

2 respostas

2

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.

    
por 31.03.2013 / 22:59
0

Para que zsh funcione, você DEVE ADICIONAR:

alias ls='ls --color=auto'

Eu também tenho algumas coisas no github com um .zshrc example

    
por 10.08.2016 / 04:03