Como alterar a cor de arquivos diferentes em ls [duplicado]

0

Então, eu sei que existe uma maneira de mudar a cor do texto para diretórios, arquivos regulares, scripts bash, etc. Existe uma maneira de alterar a cor do arquivo com base no _file extension_ ?

Exemplo:

$ ls -l
foo.txt  [is red] 
foo.text  [is blue] 
foo.secret  [is green] 
foo.txt  [is red]
    
por Joe Theman 09.11.2016 / 08:28

2 respostas

5

Sim, usando a variável LS_COLORS (assumindo o GNU ls ). A maneira mais fácil de manipular isso é usar dircolors :

dircolors --print-database > dircolors.txt

irá descarregar as configurações atuais para dircolors.txt , que você pode editar; depois de adicionar suas configurações,

eval $(dircolors dircolors.txt)

atualizará LS_COLORS e exportará. Você deve adicionar isso ao seu script de inicialização do shell.

Para aplicar as configurações de exemplo fornecidas, as entradas para adicionar a dircolors.txt seriam

.txt 00;31
.text 00;34
.secret 00;32
    
por 09.11.2016 / 08:39
0

Uma maneira de fazer isso (não da melhor maneira) é criar uma função de shell personalizada:

myls() {
  for f in *; do
    if [ "${f##*.}" = txt ]; then
      printf '\e[1;31m%s\e[0m\n' "$f"
    elif [ "${f##*.}" = text ]; then
      printf '\e[1;34m%s\e[0m\n' "$f"
    elif [ "${f##*.}" = secret ]; then
      printf '\e[1;32m%s\e[0m\n' "$f"
    else
      printf '%s\n' "$f"
    fi
  done
}

Leitura adicional:

por 09.11.2016 / 08:48

Tags