Como alterar as cores de diretórios e arquivos no comando ls

Se você executou o lscomando no Bash, notará que os diretórios e arquivos exibidos são coloridos de acordo com seu tipo. Você pode personalizar seu próprio esquema de cores para escolher diferentes cores de texto, cores de fundo e formatação como negrito e sublinhado.

Como isso funciona

O esquema de cores é armazenado na variável LS_COLORS. Para visualizar seu esquema de cores atual, você pode dizer ao Bash para imprimir o conteúdo da variável:

echo $ LS_COLORS

Você verá uma longa lista de tipos de arquivos e códigos numéricos. Explicaremos como criar uma lista como esta você mesmo.

Antes de brincar com isso, recomendamos salvar o conteúdo atual da variável LS_COLORS em outra variável. Isso permitirá que você restaure rapidamente as configurações padrão sem sair do shell e entrar novamente ou fechar e reabrir a janela do terminal. Para salvar o conteúdo atual da variável LS_COLORS em uma nova variável chamada ORIGINAL, execute:

ORIGINAL = $ LS_COLORS

A qualquer momento, você pode executar o seguinte comando para desfazer as alterações e restaurar as cores padrão:

LS_COLORS = $ ORIGINAL

Suas alterações são sempre temporárias até que você edite um arquivo para torná-lo seus novos padrões. Você sempre pode sair e entrar novamente ou fechar e reabrir uma janela do terminal para restaurar as cores para a configuração padrão. No entanto, isso torna mais fácil fazer isso com um único comando rápido.

Como definir cores personalizadas

A variável LS_COLORS contém uma lista de tipos de arquivo junto com os códigos de cores associados. A lista padrão é longa porque especifica cores diferentes para vários tipos de arquivo diferentes.

Vamos começar um exemplo básico para demonstrar como isso funciona. Digamos que desejamos alterar a cor dos diretórios do azul negrito padrão para vermelho negrito. Podemos executar o seguinte comando para fazer isso:

LS_COLORS = "di = 1; 31"

O di=1;31bit informa ls que os diretórios ( di) são ( =) negrito ( 1;) vermelho ( 31).

Recomendado:  Como usar o comando chroot no Linux

No entanto, esta é apenas uma variável LS_COLORS muito simples que define diretórios como uma cor e deixa todos os outros tipos de arquivo como a cor padrão. Digamos que também desejemos tornar os arquivos com a extensão .desktop uma cor ciano sublinhada. Podemos executar o seguinte comando para fazer isso:

LS_COLORS = "di = 1: 31: *. Desktop = 4; 36"

Isso informa ls que os diretórios ( di) são ( =) negrito ( 1;) vermelho ( 31) e ( :) qualquer arquivo terminando em .desktop ( *.desktop) é ( =) sublinhado ( 4;) ciano ( 36).

Este é o processo de montagem de sua lista de tipos e cores de arquivo. Especifique quantos quiser no formato filetype = color, separando cada um com dois pontos (:).

Para montar sua própria lista, você só precisa saber a lista de códigos de cores e códigos de tipo de arquivo. Ele usa os mesmos códigos numéricos de cores que você usa ao  alterar a cor no prompt do Bash .

Esta é a lista de códigos de cores para o texto em primeiro plano:

  • Preto: 30
  • Azul: 34
  • Ciano: 36
  • Verde: 32
  • Roxo: 35
  • Vermelho: 31
  • Branco: 37
  • Amarelo: 33

Por exemplo, como o texto amarelo é o código de cor 33, você usaria di=33para tornar os diretórios amarelos.

Aqui está a lista de atributos de cor de texto:

  • Texto normal: 0
  • Texto em negrito ou claro: 1 (depende do emulador de terminal).
  • Dim Text: 2
  • Texto Sublinhado: 4
  • Texto piscando: 5 (Isso não funciona na maioria dos emuladores de terminal.)
  • Texto invertido: 7 (isso inverte as cores do primeiro plano e do plano de fundo, de modo que você verá o texto preto em um fundo branco se o texto atual for um texto branco em um fundo preto.)
  • Texto Oculto: 8

Ao especificar um atributo ou mais de um código de cor, separe a lista de códigos com um ponto e vírgula (;). Você não precisa especificar 0 para texto normal, pois o texto normal é usado quando você não especifica um atributo aqui.

Recomendado:  5 termos técnicos que você está dizendo errado

Por exemplo, como o texto em negrito é o código de cor 1 e o texto em amarelo é o código de cor 33, você usaria di=1;33para tornar os diretórios amarelo em negrito. Você também pode especificar mais de um atributo. Por exemplo, você pode usar di=1;4;33para tornar os diretórios em negrito e sublinhados em amarelo.

Aqui está a lista de códigos de cores de fundo:

  • Fundo preto: 40
  • Fundo azul: 44
  • Fundo ciano: 46
  • Fundo verde: 42
  • Fundo roxo: 45
  • Fundo vermelho: 41
  • Fundo branco: 47
  • Fundo amarelo: 43

Por exemplo, como um fundo azul é o código de cor 44, você usaria di=44para usar um fundo azul para diretórios. Você também pode combinar um código de cor de fundo, um código de cor de primeiro plano e quantos atributos desejar. Por exemplo, di=1;4;33;44forneceria texto amarelo em negrito e sublinhado em um fundo azul.

Esta é a lista de códigos de tipo de arquivo:

  • Diretório: di
  • Arquivo: fi
  • Link Simbólico: ln
  • Tubulação Nomeada (FIFO): pi
  • Soquete: então
  • Dispositivo de bloco: bd
  • Dispositivo de personagem: cd
  • Link simbólico órfão (aponta para um arquivo que não existe mais): ou
  • Arquivo ausente (um arquivo ausente para o qual um link simbólico órfão aponta): mi
  • Arquivo executável (tem permissão “x”): ex
  • * .extension: Qualquer arquivo que termine com uma extensão especificada por você. Por exemplo, use * .txt para arquivos terminados em .txt, * .mp3 para arquivos terminados em .mp3, * .desktop para arquivos terminados em .desktop ou qualquer outra coisa que você desejar. Você pode especificar quantas extensões de arquivo diferentes desejar.

Especifique quantos tipos diferentes de códigos de tipo de arquivo com quantas cores diferentes desejar, separados pelo caractere:. Repita este processo para montar sua variável LS_COLORS.

Recomendado:  O que é um CDN e por que as empresas os usam?

Por exemplo, digamos que você deseja usar texto roxo em negrito para diretórios, texto sublinhado em vermelho para arquivos executáveis ​​e texto verde em negrito em um fundo vermelho para arquivos .mp3. Juntando os códigos de tipo de arquivo e códigos de cores das listas acima, você obteria:

LS_COLORS = "di = 1; 35: ex = 4; 31: *. Mp3 = 1; 32; 41"

Como definir suas novas cores padrão

Agora você tem uma variável LS_COLORS personalizada que funciona na sessão Bash atual. No entanto, você provavelmente deseja torná-lo permanente para que seja usado automaticamente sempre que iniciar uma nova sessão Bash sem que você tenha que se lembrar disso.

Você pode definir sua variável LS_COLORS personalizada – e qualquer outra variável Bash que desejar – adicionando-a ao arquivo .bashrc da sua conta de usuário. Este arquivo está localizado em ~ / .bashrc. Portanto, se o seu nome de usuário for bob, você o encontrará em /home/bob/.bashrc. Existem outras maneiras de definir variáveis ​​de ambiente também, mas esta é simples.

Primeiro, abra este arquivo em seu editor de texto preferido. Usaremos o nano aqui como exemplo, mas você pode usar o vi, emacs ou qualquer outra coisa que desejar.

nano ~ / .bashrc

Adicione sua variável LS_COLORS personalizada a uma nova linha no final do arquivo, assim:

LS_COLORS = "di = 1; 35: ex = 4; 31: *. Mp3 = 1; 32; 41"

Salve o arquivo e saia. No nano, pressione Ctrl + O e Enter para salvar, depois pressione Ctrl + X para sair.

Sempre que você iniciar uma nova sessão Bash, o Bash lerá o arquivo .bashrc e definirá automaticamente sua variável LS_COLORS. Para alterar suas cores no futuro, volte para o arquivo .bashrc e edite a linha LS_COLORS.

Você também pode simplesmente excluir a LS_COLORS=linha que adicionou ao arquivo .bashrc para usar as cores padrão novamente. Se você não definir o valor LS_COLORS, o Bash usará as cores padrão.