O que as diferentes cores significam em sl?

364

O que significam as diferentes cores no lscomando do Ubuntu ? Por exemplo, quando digito o lscomando em uma das minhas pastas, recebo um dos arquivos em verde claro, o outro (que é uma pasta) em azul com destaque verde.

O que significam essas cores e existe algum manual sobre todas as cores?

Rafid
fonte

Respostas:

391
  • Azul : Diretório
  • Verde : arquivo de dados executável ou reconhecido
  • Céu azul : arquivo de link simbólico
  • Amarelo com fundo preto : dispositivo
  • Rosa : arquivo de imagem gráfica
  • Vermelho : arquivo morto
  • Vermelho com fundo preto : link quebrado

Para a sua informação:

  • Para desativar a cor, é necessário comentar as seguintes linhas .bashrc.

    # enable color support of ls and also add handy aliases
    #if [ -x /usr/bin/dircolors ]; then
    #    test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
    #    alias ls='ls --color=auto'
    #    #alias dir='dir --color=auto'
    #    #alias vdir='vdir --color=auto'
    #
    #    alias grep='grep --color=auto'
    #    alias fgrep='fgrep --color=auto'
    #    alias egrep='egrep --color=auto'
    #fi
    
  • Além disso, se você quiser ver seus próprios significados de cor do bash, copie / cole os seguintes códigos no seu terminal.

    eval $(echo "no:global default;fi:normal file;di:directory;ln:symbolic link;pi:named pipe;so:socket;do:door;bd:block device;cd:character device;or:orphan symlink;mi:missing file;su:set uid;sg:set gid;tw:sticky other writable;ow:other writable;st:sticky;ex:executable;"|sed -e 's/:/="/g; s/\;/"\n/g')           
    {      
      IFS=:     
      for i in $LS_COLORS     
      do        
        echo -e "\e[${i#*=}m$( x=${i%=*}; [ "${!x}" ] && echo "${!x}" || echo "$x" )\e[m" 
      done       
    } 

    Resultado:
    texto alternativo

Nota:

karthick87
fonte
28
Esse evalscript que mostra a representação de cores de saída para cada tipo é brilhante ... obrigado!
Russ
2
Pure sourcery;)
Homunculus Reticulli
5
Uma versão mais legível desse evalscript é aqui: github.com/gkotian/gautam_linux/blob/master/scripts/colours.sh
Gautam
3
Vermelho também é um link simbólico morto.
Thomas Ward
1
e os arquivos em texto branco normal?
S ..
98

Você pode descobrir quais cores lsusam olhando a $LS_COLORSvariável:

  • Turquesa: arquivos de áudio 1
  • Vermelho brilhante: arquivos e arquivos compactados 2
  • Roxo: imagens e vídeos 3

Além disso, os arquivos são coloridos por atributos:

texto alternativo


  1. aac, au, flac, mid, midi, mka, mp3, mpc, ogg, ra, wav, axa, oga, spx, xspf.

  2. tar, tgz, arj, taz, lzh, lzma, tlz, txz, zip, z, Z, dz, gz, lz, xz, bz2, bz, tbz, tbz2, tz, deb, rpm, jar, rar, ace, zoo, cpio, 7z, rz.

  3. jpg, jpeg, gif, bmp, pbm, pgm, ppm, tga, xbm, xpm, tif, tiff, png, svg, svgz, mng, pcx, mov, mpg, mpeg, m2v, mkv, ogm, mp4, m4v, mp4v, vob, qt, nuv, wmv, asf, rm, rmvb, flc, avi, fli, flv, gl, dl, xcf, xwd, yuv, cgm, emf, axv, ans, ogv, ogx.


Toda essa informação está contida na saída de dircolors --print-database, mas sua formatação é bastante ilegível.

Aqui está uma explicação técnica do que está acontecendo:

Exemplo:

CHR 40;33;01

O código de cores consiste em três partes:

  • A primeira parte antes do ponto e vírgula representa o estilo do texto.

    • 00 = nenhum, 01 = negrito, 04 = sublinhado, 05 = piscar, 07 = reverso, 08 = oculto.
  • A segunda e terceira parte são a cor e a cor do plano de fundo:

    • 30 = preto, 31 = vermelho, 32 = verde, 33 = amarelo, 34 = azul, 35 = magenta, 36 = ciano, 37 = branco.

Cada parte pode ser omitida, assumindo o início à esquerda. ie "01" significa negrito, "01; 31" significa negrito e vermelho. E você faria com que seu terminal imprima em cores escapando da instrução \33[e finalizando-o com um m. 33 ou 1B em hexadecimal, é o sinal ASCII "ESCAPE" (um caractere especial no conjunto de caracteres ASCII). Exemplo:

"\33[1;31mHello World\33[m"

Imprime "Hello World" em vermelho brilhante.

O comando lscom o argumento --color=auto(no Ubuntu, lsé um apelido para ls --color=auto) percorre todos os nomes de arquivos e tenta primeiro corresponder tipos diferentes, como Executable, Pipe e assim por diante. Em seguida, ele tenta corresponder expressões regulares como * .wav e imprime o nome do arquivo resultante, incluído nestas instruções de mudança de cor para o bash.

Stefano Palazzo
fonte
Obrigado! Eu estava olhando para uma pergunta de visualização de topologia do Git e me perguntei por que alguns dos personagens estavam sendo impressos.
Pdp
27

Se você digitar dircolors( echo $LS_COLORStambém funciona) na linha de comando, receberá uma lista de códigos e cores para vários tipos de arquivos em uma linha. dircolors --print-databasemostra uma linha de cada vez. Aqui está uma pequena lista (tentei colocar as mais importantes). Na parte inferior, há uma explicação sobre o que os diferentes códigos no final de cada linha representam:

NORMAL 00 # padrão global, embora tudo deva ser alguma coisa.
ARQUIVO 00 # arquivo normal
Diretório DIR 01; 34 #
LINK 01; 36 # link simbólico. (Se você definir como 'destino' em vez de um
 # valor numérico, a cor é a mesma do arquivo apontado.)
Tubo FIFO 40; 33 #
SOCK 01; soquete 35 #
PORTA 01; porta 35 #
Driver de dispositivo do bloco BLK 40; 33; 01 #
Driver de dispositivo de caracteres CHR 40; 33; 01 #
ORPHAN 40; 31; 01 # link simbólico para arquivo inexistente ou arquivo não estático
SETUID 37; 41 # arquivo que está definido (u + s)
SETGID 30; 43 # arquivo que é setgid (g + s)
STICKY_OTHER_WRITABLE 30; 42 # dir que é pegajoso e com outras gravações (+ t, o + w)
OTHER_WRITABLE 34; 42 # dir que pode ser gravado em outra fonte (o + w) e não pegajoso
STICKY 37; 44 # dir com o conjunto de bits pegajoso (+ t) e não gravável
# arquivos ou compactados (vermelho brilhante)
.tar 01; 31
.tgz 01; 31
# formatos de imagem
.jpg 01; 35
.jpeg 01; 35
.gif 01; 35
.bmp 01; 35
# formatos de áudio
.aac 00; 36
.flac 00; 36
.ogg 00; 36
  • Códigos de atributo: 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed
  • Códigos de cores do texto: 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white
  • Códigos de cores de fundo: 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white

Se você quiser brincar com isso, aqui está um exemplo de como definir uma cor para um arquivo:

export LS_COLORS=$LS_COLORS:"*.ogg=01;35":"*.mp3=01;35"  

Isso irá definir *.ogge .mp3para bold magenta. E se você colocá-lo em seu .bashrcarquivo, ele se tornará permanente.

Rinzwind
fonte
2
Ei, talvez alguém venha com uma resposta melhor. Btw você me superei 15k com este upvote;)
Rinzwind
rock on! Você tem-se lá ... Obrigado mais uma vez, porém, eu tinha uma "string" / para procurar-se em algumas das cores que eu estava inseguro sobre
user784637
Essa (excelente) resposta foi mesclada , caso você esteja se perguntando sobre as datas. :-)
Stefano Palazzo
@Rinzwind, para definir uma cor para o pdfarquivo, o processo é usar export? É possível simplesmente adicionar uma extensão na LS_COLORS variável padrão ?
Sigur 28/01
23

Isso se expande na resposta de Karthick87 .


Com a configuração padrão

  • Não colorido (branco) : arquivo ou texto que não seja do nome do arquivo (por exemplo, permissões na saída de ls -l)
  • Negrito azul : diretório
  • Ciano em negrito : link simbólico
  • Negrito verde : arquivo executável
  • Negrito vermelho : arquivo morto
  • Magenta em negrito : arquivo de imagem, vídeo, gráfico etc. ou porta ou soquete
  • Ciano : arquivo de áudio
  • Amarelo com fundo preto : tubo (AKA FIFO)
  • Negrito em amarelo com fundo preto : dispositivo de bloco ou dispositivo de caracteres
  • Negrito vermelho com fundo preto : link simbólico órfão ou arquivo ausente
  • Sem cor com fundo vermelho : arquivo set-user-ID
  • Preto com fundo amarelo : arquivo set-group-ID
  • Preto com fundo vermelho : arquivo com capacidade
  • Branco com fundo azul : diretório pegajoso
  • Azul com fundo verde : diretório gravável
  • Preto com fundo verde : diretório pegajoso e com outras gravações

Script para mostrar cores

#!/bin/bash
# For LS_COLORS, print type and description in the relevant color.

IFS=:
for ls_color in $LS_COLORS; do
    color="${ls_color#*=}"
    type="${ls_color%=*}"

    # Add descriptions for named types.
    case "$type" in
    bd) type+=" (block device)" ;;
    ca) type+=" (file with capability)" ;;
    cd) type+=" (character device)" ;;
    di) type+=" (directory)" ;;
    do) type+=" (door)" ;;
    ex) type+=" (executable file)" ;;
    fi) type+=" (regular file)" ;;
    ln) type+=" (symbolic link)" ;;
    mh) type+=" (multi-hardlink)" ;;
    mi) type+=" (missing file)" ;;
    no) type+=" (normal non-filename text)" ;;
    or) type+=" (orphan symlink)" ;;
    ow) type+=" (other-writable directory)" ;;
    pi) type+=" (named pipe, AKA FIFO)" ;;
    rs) type+=" (reset to no color)" ;;
    sg) type+=" (set-group-ID)" ;;
    so) type+=" (socket)" ;;
    st) type+=" (sticky directory)" ;;
    su) type+=" (set-user-ID)" ;;
    tw) type+=" (sticky and other-writable directory)" ;;
    esac

    # Separate each color with a newline.
    if [[ $color_prev ]] && [[ $color != $color_prev ]]; then
        echo
    fi

    printf "\e[%sm%s\e[m " "$color" "$type"

    # For next loop
    color_prev="$color"
done
echo

Saída com configuração padrão:

captura de tela do gnome-terminal

Saída com minha configuração (dircolors personalizados e tema personalizado do terminal Solarized):

captura de tela do gnome-terminal

Peguei as descrições de dircolors -pe man dir_colorspreenchi as lacunas com minha própria pesquisa.

As cores e descrições são as mesmas de 14.04 a 17.10.

wjandrea
fonte
Como você sabia rsmeios RESET, mhmeios MULTIHARDLINK, cameios CAPABILITYetc?
Fredrick Gauss
@FredrickGauss Como escrevi na resposta, recebi descrições em execução dircolors -p.
Wjandrea 4/17
dircolors -pnão diz que rs é RESET 0 # redefinir para a cor "normal" .
Fredrick Gauss
@FredrickGauss Não explicitamente, mas "RESET" é o único que pode ser abreviado como "rs", e a cor (0) corresponde.
Wjandrea 4/17
18

Nenhuma das respostas aqui inclui as 256 opções de cores nas versões mais recentes do Ubuntu. Eu sou deficiente em cores (algumas cores me incomodam), então o diretório azul padrão em preto é muito difícil de ler. O que se segue é minha pesquisa para mudar isso.

Digite dircolors -p |lesspara ver seu código de cores atual.

O .bashrc padrão já deve estar configurado não apenas para aproveitar o código de cores do sistema, mas também um em ~ / .dircolors, para despejar a saída de dircolors em .dircolor para que você possa começar usando esse comando. dircolors -p > ~/.dircolors

Alternativa: escolha dircolors de 256 cores muito semelhantes no projeto solarizado da seebi .

Pegue esse script mais elegante e execute-o com o comando colortest -wpara poder ver todas as cores de uma só vez. Escolha uma cor. Eu gosto da laranja # 208. Quero que seja a cor do texto, portanto, usando essas informações em códigos de cores estendidos, posso aplicar isso.

Então você tem uma cor, e agora. Primeiro temos que criar a string.

O primeiro número será um código de atributo, provavelmente 00, mas se você quiser piscar, vá com 05:

Escolha um código de atributo: 00 = nenhum 01 = negrito 04 = sublinhado 05 = piscar 07 = inverter 08 = oculto

Em seguida, escolha anexar ;38;5;a esse código de atributo para indicar a cor do texto para obter 00; 38; 5; e depois acrescente sua cor. Eu escolhi 208, então eu recebo 00;38;5;208.

Se você quiser também colocar um plano de fundo, escolha outra cor (digamos 56) com o script mais recente e o apêndice ;48;5;para o plano de fundo e 56 para a cor para obter uma sequência total de 00;38;5;208;48;5;56.

Então agora você tem, o que você faz com isso?

vim ~/.dircolors e encontre a seção que você deseja alterar (para mim, que é DIR) para a sequência que determinamos acima "00; 38; 5; 208".

Isso não se aplicará imediatamente, você precisará carregar a configuração. Use dircolors ~/.dircolorspara o código get para definir sua variável LS_COLORS. Você pode simplesmente colar isso na sua sessão do terminal ou pode fechar o seu terminal e reabri-lo. Você também pode canalizar isso para um arquivo e executá-lo como um script de shell.

Você pode executar o mesmo procedimento com 16 cores. Você não precisa do material especial; 38; 5 ou; 48; 5. Basta jogar os números na corda e aproveitar a simplicidade.

Obrigado a Dan e seebi por suas anotações e código sobre isso.

flickerfly
fonte
verifique se 256 cores funcionarão apenas em terminais compatíveis com xterm . Portanto, 256 cores não funcionam comigo no Konsole, mas no xterm e rxvt-unicode .
DK Bose
1
O Konsole faz suas próprias coisas. Confira draculatheme.com/konsole ou techoverflow.net/2013/11/08/installing-konsole-solarized-theme para obter um bom esquema de cores.
flickerfly 14/03