dircolors: modificar configurações de cores globalmente

40

Eu entendo lsusos dircolorspara exibir saída colorida. dircolorspossui banco de dados padrão de cores associado a extensões de arquivo, que podem ser impressas com o comando

dircolors --print-database

Pelo man dir_colorsque li, o banco de dados em todo o sistema deve estar localizado /etc/DIR_COLORS. Mas esse arquivo não existe no meu sistema (Debian). Como posso modificar as configurações de cores em todo o sistema dircolors? De onde o comando dircolors --print-databasetira as configurações, quando não existe arquivo.

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

Uma segunda pergunta é se é possível usar cores de 8 bits para as cores da tela. Meu terminal é xterm-256color.

user1968963
fonte

Respostas:

36

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

Para bash, você colocaria 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ê deve colocá-lo /etc/zshrcou mandar zshler /etc/profilena inicialização. Sua distribuição zshjá deve ter feito isso. Eu apenas trago isso para salientar que a configuração dircolorspara todos realmente depende do shell que eles usam.

Quanto à origem de dircolorssuas configurações, quando você não especifica um arquivo, ele usa apenas alguns padrões internos.

Você pode usar xtermos códigos de escape de 256 cores em seu arquivo de cores, mas lembre-se de que eles funcionarão apenas para xtermterminais compatíveis. Eles não funcionarão no console de texto do Linux, por exemplo.

O formato para códigos de escape de 256 cores é 38;5;colorNpara cores de primeiro plano e cores 48;5;colorNde segundo plano. 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!
Matt
fonte
11
você poderia explicar como posso usar os códigos de escape de 256 cores? Vamos dizer que eu quero mudar o seguinte .mp3 00;36para uso color126 do xterm-256 cores traçar upload.wikimedia.org/wikipedia/en/1/15/Xterm_256color_chart.svg
user1968963
11
Claro, veja minha edição.
Matt
8

De onde o comando dircolors --print-databasetira as configurações, quando não existe arquivo.

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

Se o arquivo for especificado, o dircolors o lerá para determinar quais cores usar para quais tipos e extensões de arquivo. Caso contrário, um banco de dados pré-compilado é usado. Para detalhes sobre o formato desses arquivos, execute ' dircolors --print-database'.

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

d=/etc/dircolors
test -r $d && eval "$(dircolors $d)"
devnull
fonte
7

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

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

http://www.linuxfromscratch.org/blfs/view/svn/postlfs/profile.html

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

Copie /etc/DIR_COLORSpara o seu /home/el/.dircolorsdiretório. Crie se não existir.

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

Mude isso:

DIR 01;34   # directory

Para isso:

DIR 01;36   # directory

Salve e feche e reinicie o shell. Os diretórios vão de azul escuro no preto (ilegível) a azul-petróleo brilhante no preto (legível).

Eric Leschinski
fonte
2
-1: não /etc/DIR_COLORSna distribuição do OP, Debian. E ele já sabe sobre ~/.dircolors, que não era a questão
MestreLion