dircolors: modificar configurações de cor globaly

35

Eu entendo ls usa dircolors para exibir a saída colorida. dircolors tem banco de dados padrão de cores associado a extensões de arquivo, que podem ser impressas com o comando

dircolors --print-database

A partir de man dir_colors que eu li, o banco de dados do sistema deve estar localizado em /etc/DIR_COLORS . Mas este arquivo não existe no meu sistema (Debian). Como posso modificar as configurações de cores em todo o sistema para dircolors ? De onde é que o comando dircolors --print-database toma as configurações, quando não existe nenhum arquivo.

Estou ciente de que o usuário pode ter o arquivo ~/.dircolors específico do usuário com suas configurações, mas isso não é adequado para mim, pois preciso alterar as configurações para todos.

Uma segunda questão é, se é possível usar cores de 8 bits para dircolors. Meu terminal é xterm-256color .

    
por user1968963 09.10.2013 / 18:51

3 respostas

31

ls leva as configurações de cor da variável de ambiente LS_COLORS . dircolors é apenas uma maneira conveniente de gerar essa variável de ambiente. Para que esta variável de ambiente tenha efeito em todo o sistema, coloque-a no arquivo de inicialização do seu shell.

Para bash , você coloca isso em /etc/profile :

# 'dircolors' prints out 'LS_COLORS='...'; export LS_COLORS', so eval'ing
# $(dircolors) effectively sets the LS_COLORS environment variable.

eval "$(dircolors /etc/DIR_COLORS)"

Para zsh , você pode colocá-lo em /etc/zshrc ou organizar zsh para ler /etc/profile na inicialização. Sua distribuição pode ter zsh fazer isso já. Eu só trouxe isso para apontar que definir dircolors para todos realmente depende do shell que eles usam.

Quanto a onde dircolors obtém suas configurações, quando você não especifica um arquivo, ele usa apenas alguns padrões internos.

Você pode usar os códigos de escape de 256 cores de xterm em seu arquivo dircolors, mas esteja ciente de que eles só funcionarão para terminais xterm compatíveis. Eles não funcionarão no console de texto do Linux, por exemplo.

O formato para 256 códigos de escape de cor é 38;5;colorN para cores de primeiro plano e 48;5;colorN para cores de fundo. Então, por exemplo:

.mp3  38;5;160                   # Set fg color to color 160      
.flac 48;5;240                   # Set bg color to color 240
.ogg  38;5;160;48;5;240          # Set fg color 160 *and* bg color 240.
.wav  01;04;05;38;5;160;48;5;240 # Pure madness: make bold (01), underlined (04), blink (05), fg color 160, and bg color 240!
    
por 09.10.2013 / 19:34
7

Where does the command dircolors --print-database take the settings from, when no file exists.

De acordo com o manual , ele usa um banco de dados pré-compilado na ausência de um arquivo.

If file is specified, dircolors reads it to determine which colors to use for which file types and extensions. Otherwise, a precompiled database is used. For details on the format of these files, run ‘dircolors --print-database’.

Para alterar as configurações de todos, você pode criar um arquivo /etc/dircolors e adicionar o seguinte a /etc/bashrc :

d=/etc/dircolors
test -r $d && eval "$(dircolors $d)"
    
por 09.10.2013 / 19:30
7

O Linux define as cores de fundo do console com dircolors:

Seu arquivo dircolors controla as cores das palavras que aparecem através de ls no console. Encontre este arquivo .dircolors para sua distribuição, um link para ajudar:

link

Para mim no Fedora 17, meu arquivo dircolors é: /etc/DIR_COLORS

Copie /etc/DIR_COLORS no seu diretório /home/el/.dircolors . Crie-o se não existir.

Edite /home/el/.dircolors e procure o texto "dir".

Altere isto:

DIR 01;34   # directory

Para isso:

DIR 01;36   # directory

Salve, feche e reinicie o shell. Os diretórios vão do azul escuro ao preto (ilegível) até o verde brilhante no preto (legível).

    
por 01.11.2013 / 15:16

Tags