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

Publicados: 2022-01-29

Se você executou o comando ls no Bash, notará que os diretórios e arquivos que você vê 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 arquivo e códigos numéricos. Vamos explicar 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 suas alterações e restaurar as cores padrão:

 LS_COLORS=$ORIGINAL
Propaganda

Suas alterações são sempre temporárias até que você edite um arquivo para torná-los seus novos padrões. Você sempre pode sair e entrar novamente ou fechar e reabrir uma janela de terminal para restaurar as cores para a configuração padrão. No entanto, isso facilita 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 queremos alterar a cor dos diretórios do azul em negrito padrão para vermelho em negrito. Podemos executar o seguinte comando para fazer isso:

 LS_COLORS="di=1;31"

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

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

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

Isso informa ao ls que os diretórios ( di ) são ( = ) bold ( 1; ) red ( 31 ) e ( : ) qualquer arquivo que termine em .desktop ( *.desktop ) é ( = ) sublinhado ( 4; ) cyan ( 36 ).

Este é o processo para montar sua lista de tipos e cores de arquivos. Especifique quantos desejar no formulário filetype=color, separando cada um com dois pontos (:).

RELACIONADO: Como personalizar (e colorir) seu prompt do Bash

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

Aqui está a lista de códigos de cores para 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=33 para 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.)
  • Escurecer texto: 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, para que você veja texto preto em um fundo branco se o texto atual for 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 caractere 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.

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;33 para tornar os diretórios em negrito amarelo. Você também pode especificar mais de um atributo. Por exemplo, você pode usar di=1;4;33 para 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 plano de fundo azul é o código de cor 44, você usaria di=44 para usar um plano de 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;44 forneceria texto amarelo em negrito e sublinhado em um fundo azul.

Aqui está a lista de códigos de tipo de arquivo:

  • Diretório: di
  • Arquivo: fi
  • Link Simbólico: ln
  • Pipe nomeado (FIFO): pi
  • Soquete: então
  • Bloquear dispositivo: 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 a permissão “x”): ex
  • *.extension: Qualquer arquivo que termine com uma extensão que você especificar. Por exemplo, use *.txt para arquivos que terminam em .txt, *.mp3 para arquivos que terminam em .mp3, *.desktop para arquivos que terminam em .desktop ou qualquer outra coisa que desejar. Você pode especificar quantas extensões de arquivo diferentes desejar.
Propaganda

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

Por exemplo, digamos que você queira usar texto roxo em negrito para diretórios, texto vermelho sublinhado 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 atual do Bash. No entanto, você provavelmente deseja torná-lo permanente para que seja usado automaticamente sempre que você iniciar uma nova sessão do Bash sem precisar 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 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 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"
Propaganda

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

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

Você também pode simplesmente deletar a linha LS_COLORS= que você adicionou ao seu 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.