Questão O que significam as diferentes cores em ls?


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

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


299
2017-12-14 08:15


origem




Respostas:


  • 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
  • Vermelho com fundo preto: Link quebrado

Para a sua informação:

  • Para desativar a cor, você deve comentar as seguintes linhas em .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 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       
    } 
    

    Saída:
    alt text

Nota: 


307
2017-12-14 08:18



que eval Um script mostrando a representação da cor de saída para cada tipo é brilhante ... obrigado! - Russ
Fonte pura;) - Homunculus Reticulli
Uma versão mais legível do que eval script está aqui: github.com/gkotian/gautam_linux/blob/master/scripts/colours.sh - Gautam
O vermelho também é um link simbólico morto. - Thomas Ward♦
E quanto aos arquivos em texto branco normal? - S..


Você pode descobrir quais cores ls usa, olhando para o $LS_COLORS variável:

  • Turquesa: arquivos de áudio1
  • Vermelho brilhante: arquivos compactados e arquivos2
  • Roxo: imagens e vídeos3

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

alt text


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

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

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


Toda esta 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 de fundo:

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

Cada parte pode ser omitida, partindo do princípio à esquerda. ou seja, "01" significa negrito, "01; 31" significa negrito e vermelho. E você pegaria seu terminal para imprimir em cores, escapando da instrução com \33[ e terminando 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 ls com o argumento --color=auto (no Ubuntu, ls é um alias para ls --color=auto) percorre todos os nomes dos arquivos e tenta primeiro corresponder tipos diferentes, como Executável, Tubulação e assim por diante. Em seguida, ele tenta corresponder expressões regulares como * .wav e imprime o nome do arquivo resultante, contido nestas instruções de alteração de cor do bash.


86
2017-12-14 08:57



Obrigado! Eu estava olhando para um Visualização de topologia Git  pergunta e perguntou por que alguns dos personagens estavam sendo impressos. - pdp


Se você digitar dircolors (echo $LS_COLORS também funciona) a partir da linha de comando, você obterá uma lista de códigos e cores para vários tipos de arquivos em uma linha. dircolors --print-database mostra-lhes 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 códigos diferentes no final de cada linha representam:

NORMAL 00 # padrão global, embora tudo deva ser algo.
ARQUIVO 00 # arquivo normal
DIR 01; 34 # diretório
LINK 01; 36 # link simbólico. (Se você definir isso como 'destino' em vez de
 # valor numérico, a cor é como para o arquivo apontado.
FIFO 40; tubo 33 #
SOCK 01; tomada 35 #
PORTA 01; 35 # porta
BLK 40; 33; 01 # driver de dispositivo de bloco
CHR 40; 33; 01 # driver de dispositivo de caractere
ORPHAN 40; 31; 01 # symlink para arquivo inexistente, ou arquivo não estatável
SETUID 37; 41 # arquivo que é setuid (u + s)
SETGID 30; 43 # arquivo que é setgid (g + s)
STICKY_OTHER_WRITABLE 30; 42 # dir que é pegajoso e outro gravável (+ t, o + w)
OTHER_WRITABLE 34; 42 # dir que é outro gravável (o + w) e não pegajoso
STICKY 37; 44 # dir com o conjunto de bits pegajoso (+ t) e não outro 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 atributos: 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed
  • Códigos de cores de 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 sobre como definir uma cor para um arquivo:

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

Isso irá definir *.ogg e .mp3 para bold magenta. E se você colocar na sua .bashrc arquivo vai se tornar permanente.


27
2017-09-14 08:25



Ei, talvez alguém venha com uma resposta melhor. Btw você me deu mais de 15k com este upvote;) - Rinzwind
rock on! Você chegou lá ... Mais uma vez obrigado, eu fiz uma "string" para procurar algumas das cores que eu não tinha certeza sobre - user784637
Esta (excelente) resposta foi fundido, caso você esteja se perguntando sobre as datas. :-) - Stefano Palazzo♦
@Rinzwind, então para definir uma cor para pdf arquivo, o processo é usar export? É possível simplesmente adicionar uma extensão no padrão LS_COLORS  variável? - Sigur


Nenhuma das respostas aqui inclui as 256 opções de cores nas versões mais recentes do Ubuntu. Sou deficiente de cor (algumas cores me causam problemas próximas umas das outras), então o diretório azul padrão no preto é muito difícil para eu ler. O que segue é minha pesquisa para mudar isso.

Tipo dircolors -p |less para ver seu código de cor atual.

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

Alternativa: pegar um dircolors 256 cores muito semelhantes de seebi é solarizado projeto.

Agarre isso mais cor de script e execute-o com o comando colortest -w para que você possa ver todas as cores de uma só vez. Escolha uma cor. Eu gosto da laranja # 208. Eu quero que seja a cor do texto, então usando essa informação em códigos de cores estendidos, eu 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 que ele pisque com 05:

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

Em seguida, escolha acrescentar ;38;5; para esse código de atributo para indicar sua cor de 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 fundo sobre ele, escolha outra cor (digamos 56) com o script mais colorido e o acréscimo ;48;5;para o fundo e 56 para a cor para obter uma seqüê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ê quer mudar (para mim que é DIR) para a string que nós determinamos acima "00; 38; 5; 208".

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

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

Graças a Dan e seebi para suas notas e código sobre isso.


15
2018-03-22 20:45





Isso se expande Resposta de Karthick87.


Com a configuração padrão

  • Sem cor (branco): Arquivo ou texto sem nome de arquivo (por exemplo, permissões na saída de ls -l)
  • Negrito azul: diretório
  • Ciano negrito: link simbólico
  • Negrito verde: arquivo executável
  • Negrito vermelho: arquivo
  • Magenta negrito: arquivo de imagem, vídeo, gráfico, etc. ou porta ou soquete
  • Ciano: arquivo de áudio
  • Amarelo com fundo preto: pipe (AKA FIFO)
  • Ousado amarelo com fundo preto: dispositivo de bloco ou dispositivo de caracteres
  • Negrito vermelho com fundo preto: symlink órfão ou arquivo desaparecido
  • 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 de outros writable
  • Preto com fundo verde: diretório pegajoso e outro gravável

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:

gnome-terminal screenshot

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

gnome-terminal screenshot

Eu tenho as descrições de dircolors -p e man dir_colorse preenchi as lacunas com minha própria pesquisa.

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


14
2018-02-17 21:05



Como você sabia rs significa RESET, mh significa MULTIHARDLINK, ca significa CAPABILITY etc? - Fredrick Gauss
@FredrickGauss Como eu escrevi na resposta, eu tenho descrições de execução dircolors -p. - wjandrea
dircolors -p não diz rs é RESET 0 # redefinir para cor "normal" . - Fredrick Gauss
@FredrickGauss Não explicitamente, mas "RESET" é o único que pode ser abreviado como "rs" e a cor (0) corresponde. - wjandrea
Eu estou perguntando isso. Você apenas estima, inferir. - Fredrick Gauss