O que causa este fundo verde na saída ls?

118

Existem dois diretórios mostrados por 'ls'. Normalmente, os diretórios em qualquer lugar são azuis em fundo preto. Mas o primeiro é azul no verde e impossível de ler. Por que é isso? Como tornar azul no preto, ou pelo menos algo leve em algo escuro?

Isso está no Ubuntu 12.04, usando o bash no Gnome Terminal. Em Konsole, o azul é um pouco mais escuro e possível de ler, embora possa ser muito melhor.

    
por DarenW 10.10.2013 / 20:56

8 respostas

139

Além de colorir arquivos com base em seu tipo (turquesa para arquivos de áudio, vermelho brilhante para Arquivos e arquivos compactados e roxo para imagens e vídeos), ls também colore arquivos e diretórios com base em seus atributos:

  • O texto em preto com fundo verde indica que um diretório pode ser gravado por outras pessoas além do usuário e grupo proprietário e tem o conjunto de bits fixo ( o+w, +t ).
  • O texto azul com fundo verde indica que um diretório é gravável por outros além do usuário e do grupo proprietário, e não tem o conjunto de bits fixos ( o+w, -t ).

Stephano Palazzo em Ask Ubuntu criou uma imagem muito instrutiva sobre as diferentes cores dos atributos:

Como terdon apontou, as configurações de cor pode ser modificado através de dircolors . Uma lista das diferentes configurações de coloração pode ser acessada com dircolors --print-database .

Cada linha de saída, como BLK 40;33;01 , é da forma:

[TARGET] [TEXT_STYLE];[FOREGROUND_COLOR];[BACKGROUND_COLOR]
  • TARGET indica o alvo da regra de coloração

  • TEXT_STYLE indica o estilo do texto:

    • 00 = nenhum
    • 01 = negrito
    • 04 = sublinhado
    • 05 = piscar
    • 07 = reverso,
    • 08 = oculto
  • FOREGROUND_COLOR indica a cor do primeiro plano:

    • 30 = preto
    • 31 = vermelho
    • 32 = verde
    • 33 = amarelo
    • 34 = azul,
    • 35 = magenta
    • 36 = cyan
    • 37 = branco
  • BACKGROUND_COLOR indica as cores de fundo:

    • 40 = preto
    • 41 = vermelho
    • 42 = verde
    • 43 = amarelo
    • 44 = azul,
    • 45 = magenta
    • 46 = cyan
    • 47 = branco

Os campos podem ser omitidos a partir da direita, portanto, por exemplo, .tar 01;31 significa negrito e vermelho.

O XTerm e a maioria dos outros emuladores de terminal modernos suportam 256 cores.

Um código de cor de primeiro plano de 256 cores XTerm é da forma:

38;5;[FOREGROUND_COLOR]

Um código de cor de fundo de 256 cores XTerm é da forma:

48;5;[BACKGROUND_COLOR]

em que FOREGROUND_COLOR e BACKGROUND_COLOR é um número no intervalo 0-255. Uma lista completa de códigos de cores para os modos de 16 e 256 cores é mostrada na imagem abaixo:

    
por 10.10.2013 / 21:34
52

As cores de ls podem representar as permissões, o padrão de alguns sistemas é mostrar diretórios em que todos tenham permissões de gravação com um plano de fundo verde:

Vocêpodealterarascoreseditandosuavariável$LS_COLORSusandodircolors(demanls):

Usingcolortodistinguishfiletypesisdisabledbothbydefaultandwith--color=never.With--color=auto,lsemitscolorcodesonlywhenstandardoutputisconnectedtoaterminal.TheLS_COLORSenvironmentvariablecanchangethesettings.Usethedircolorscommandtosetit.

Asintaxeéreconhecidamenteirritanteaqui,masvocêpodemudaressacorcriandoumarquivocomascoresquedesejaesalvando-ocomo~/.dircolors:

dircolors-p>~/.dircolors

Essecomandoimprimiráospadrõesem~/.dircolors.Vocêprecisaráeditaressearquivoealteraressalinha:

OTHER_WRITABLE34;42#dirthatisother-writable(o+w)andnotsticky

Porexemplo,paratorná-lotextopretoemumfundovermelho(consulte aqui para obter uma lista de códigos de cores):

OTHER_WRITABLE 30;41 # dir that is other-writable (o+w) and not sticky

Você não precisa ter todos os padrões, você também pode simplesmente criar um arquivo com uma única linha, redefinindo apenas o que você deseja alterar. De qualquer forma, depois de criar o arquivo, carregue-o com:

eval "$(dircolors ~/.dircolors)";

E aqui está em ação:

Para que isso aconteça automaticamente, adicione o comando eval acima ao seu arquivo ~/.bashrc .

    
por 10.10.2013 / 21:57
8

Eu tive a mesma pergunta, a resposta de terdon é boa, mas acho que há uma confusão entre dirname e dircolors ?

De qualquer forma, depois de alguma pesquisa eu poderia mudar as cores, então estou compartilhando minha solução aqui. Pode ser útil para alguém algum dia!

Então, 3 etapas simples:

Primeiro, como disse Terdon, copie as cores padrão para um arquivo

dircolors -p > ~/.dircolors

Em seguida, modifique este arquivo. Você pode encontrar alguns valores para cores, mas eu encontrei mais aqui :

E, finalmente, adicione a seguinte linha ao seu arquivo ~/.bashrc para as cores a serem carregadas automaticamente quando você abrir um terminal:

eval 'dircolors ~/.dircolors' > /dev/null

Voilà:)

    
por 16.04.2015 / 11:52
6

Apesar de todas as respostas técnicas serem verdadeiras, eu consideraria isso um aviso informal, que você distribuiu os direitos um pouco generosamente ou copiando criss + cross ... (na maioria das vezes todos nós, para obter as coisas inicialmente trabalhando, eh?)

How to make it blue on black,... ?

Um bom "mais verde" para recuperar os direitos que você mais deseja, é esta afirmação:

chmod -R a-x,o-w,+X thatGreenFolderWithSubfolders/

Entende melhor o que faz, se você entender o objetivo de maiúscula + X „execução especial“, ou seja, consulte Wikipedia

It is only really useful when used with '+' and usually in combination with the -R option for giving group or other access to a big directory tree without setting execute permission on normal files (such as text files), which would normally happen if you just used "chmod -R a+rx...

    
por 30.12.2016 / 00:12
1

Bem, isso significa que esta pasta tem permissões se você executar isto:

сhmod og-w AU_LI

removerá bgcolor:)

    
por 20.03.2018 / 17:33
1

Para corrigir o problema rapidamente, (deixe os outros arquivos graváveis amarelos no nobg):

LS_COLORS+=':ow=01;33'

Substitua 33 por 34 por azul em nobg. Ainda mais simples, para torná-lo nofg em nobg:

LS_COLORS+=:ow=

Para tornar sua alteração permanente, anexe-a ao seu .profile:

echo "export LS_COLORS+=':ow=01;33'" >> ~/.profile

Para ver as regras relacionadas a não extensões de LS_COLORS:

echo "$LS_COLORS" | sed 's/:/\n/g' | grep -v '\*.'

sed coloca cada regra em uma linha e grep remove as regras que começam por *.'.

Para explorar as cores ls em seu terminal, considere usar

C="$LS_COLORS"
function sc () {
    echo "$LS_COLORS" | sed 's/:/\n/g' | grep -v '\*.'
}
function t () {
    ls /mnt # Or the path to your example directory.
}

Então

LS_COLORS="$C:ow=38;5;250;48;5;025";t

Como afirmado em outra resposta (a de Thomas Nyman), 38;5; é o prefixo para o primeiro plano x-termo de 256 cores e 48;5; para o segundo x de 256 cores. No entanto, 256 cores não são suportadas por todos os terminais.

Veja também -O que significam as diferentes cores em ls? no AskUbuntu.

    
por 12.08.2018 / 11:19
0

Para corrigir isso, tente o parâmetro ow sobre o LS_COLORS

Por exemplo:

~LS_COLORS='fi=0:ln=5:pi=0:so=7:bd=5:cd=5:or=31:mi=0:ex=93:*.py=36:di=40:*.zip=33:*.tgz=33'
~ls -l

Agoraadicioneaopçãoow

~exportLS_COLORS='fi=0:ln=5:pi=0:so=7:bd=5:cd=5:or=31:mi=0:ex=93:*.py=36:di=40:*.zip=33:*.tgz=33:ow=0'~ls-l

    
por 22.12.2017 / 05:53
0

Você pode alterar o tom de verde em Putty para tornar o texto legível.

Abra o Putty e vá para Window \ Colors, selecione "ANSI Green", defina-o para um verde mais escuro (R: 0 G: 70 B: 0).

    
por 03.04.2018 / 10:38