Existem dois diretórios mostrados por “ls”. Normalmente, os diretórios em qualquer lugar são azuis em fundo preto. Mas o primeiro é azul sobre verde e impossível de ler. Por que é isso? Como deixar azul no preto, ou pelo menos algo claro em algo escuro?
Isso está no Ubuntu 12.04, usando bash no Terminal Gnome. No Konsole, o azul é ligeiramente mais escuro e possível de ler, embora pudesse ser muito melhor.
Resposta
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 preto com fundo verde indica que um diretório pode ser gravado por outros, além do usuário e grupo proprietário, e tem o bit sticky definido (
o+w, +t
) . - O texto azul com fundo verde indica que um diretório pode ser gravado por outros, além do usuário e grupo proprietário, e não tem o bit sticky definido (
o+w, -t
).
Stephano Palazzo em Ask Ubuntu criou esta imagem muito instrutiva sobre as diferentes cores de atributos:
Como terdon apontou, as configurações de cores podem ser modificadas via dircolors
. Uma lista das diferentes configurações de cores pode ser acessada com dircolors --print-database
.
Cada linha de saída, como BLK 40;33;01
, tem o formato:
[TARGET] [TEXT_STYLE];[FOREGROUND_COLOR];[BACKGROUND_COLOR]
-
TARGET
indica o alvo para a 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
= ciano -
37
= branco
-
-
BACKGROUND_COLOR
indica as cores de fundo:-
40
= preto -
41
= vermelho -
42
= verde -
43
= amarelo -
44
= azul, -
45
= magenta -
46
= ciano -
47
= branco
-
Os campos podem ser omitidos começando da direita, então, por exemplo, .tar 01;31
significa negrito e vermelho.
XTerm e muitos outros emuladores de terminal modernos suportam 256 cores.
Um código de cor de fundo de 256 cores XTerm tem o formato:
38;5;[FOREGROUND_COLOR]
Um código de cor de fundo de 256 cores XTerm tem o formato formulário:
48;5;[BACKGROUND_COLOR]
onde FOREGROUND_COLOR
e BACKGROUND_COLOR
são um numere o intervalo de 0-255. Uma lista completa de códigos de cores para os modos de 16 e 256 cores é mostrada na captura de tela abaixo:
Comentários
Resposta
As cores de ls
podem representar as permissões , o padrão para alguns sistemas é mostrar diretórios onde todos têm permissões de gravação com um fundo verde:
Você pode alterar as cores editando sua $LS_COLORS
variável usando dircolors
(de man ls
):
Using color to distinguish file types is disabled both by default and with --color=never. With --color=auto, ls emits color codes only when standard output is connected to a terminal. The LS_COLORS environment variable can change the settings. Use the dircolors command to set it.
A sintaxe é reconhecidamente um tanto chata aqui, mas você pode alterar essa cor criando um arquivo com as cores que deseja e salvando-o como ~/.dircolors
:
dircolors -p > ~/.dircolors
Esse comando imprimirá os padrões em ~/.dircolors
. Em seguida, você precisará editar esse arquivo e alterar esta linha:
OTHER_WRITABLE 34;42 # dir that is other-writable (o+w) and not sticky
Por exemplo, para torná-lo um texto preto em um fundo vermelho (consulte aqui para 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 aquele que você deseja alterar. De qualquer forma, depois de criar o arquivo, carregue-o com:
eval "$(dircolors ~/.dircolors)";
E aqui está ele em ação:
Para que isso aconteça automaticamente, adicione o eval
comando acima para seu ~/.bashrc
arquivo.
Comentários
- As cores padrão freqüentemente parecem indicar que o autor original nos odeia e nossos olhos …
- Obrigado. Por que você às vezes escreve ~ / .dirname, às vezes ~ / dircolors e às vezes ~ / .dircolors? devem ser iguais?
- Th anks. Por que
eval "$(dircolors ~/dircolors)";
em vez de uma forma mais direta, comodircolors ~/dircolors
? - @Tim porque dircolors só imprime as configurações, você precisa avaliá-lo para que sejam lidos.
- para que sejam lidos por quem?
Resposta
Embora todas as respostas técnicas sejam verdadeiras, eu consideraria um aviso um pouco informal, que você concedeu direitos um pouco generosamente ou copiando criss + cross … (na maioria das vezes todos nós fazemos , para fazer as coisas funcionarem inicialmente, hein?)
Como torná-lo azul em preto, …?
Um bom” deselegante “para voltar aos direitos que você provavelmente deseja é esta declaração:
chmod -R a-x,o-w,+X thatGreenFolderWithSubfolders/
Melhor compreendido o que faz, se você entender o propósito de maiúsculas + X „executar especial“, ou seja, consulte a Wikipedia
Só é realmente útil quando usado com “+” e geralmente em combinação com a opção -R para dar ao grupo ou outro acesso a uma grande árvore de diretório sem definir permissão de execução em arquivos normais (como arquivos de texto), o que normalmente aconteceria se você apenas usasse “chmod -R a + rx …
Resposta
Aqui estão as 3 etapas que usei para alterar as cores:
Primeiro, copie as cores padrão para um arquivo
dircolors -p > ~/.dircolors
Em seguida, modifique este arquivo. Você pode encontrar alguns valores para as cores internas e aqui estão mais alguns:
Code Color 0 Default Colour 1 Bold 4 Underlined 5 Flashing Text 7 Reverse Field 31 Red 32 Green 33 Orange 34 Blue 35 Purple 36 Cyan 37 Grey 40 Black Background 41 Red Background 42 Green Background 43 Orange Background 44 Blue Background 45 Purple Background 46 Cyan Background 47 Grey Background 90 Dark Grey 91 Light Red 92 Light Green 93 Yellow 94 Light Blue 95 Light Purple 96 Turquoise 100 Dark Grey Background 101 Light Red Background 102 Light Green Background 103 Yellow Background 104 Light Blue Background 105 Light Purple Background 106 Turquoise Background
( fonte )
E, finalmente, adicione a seguinte linha ao seu arquivo ~/.bashrc
para que as cores sejam carregadas automaticamente quando você abrir um terminal:
eval "dircolors ~/.dircolors" > /dev/null
Para ~/.zshrc
:
if [[ -f ~/.dircolors ]] ; then eval $(dircolors -b ~/.dircolors) elif [[ -f /etc/DIR_COLORS ]] ; then eval $(dircolors -b /etc/DIR_COLORS) fi
Resposta
Para corrigir rapidamente o problema, (tornar outros arquivos graváveis amarelos no nobg):
LS_COLORS+=":ow=01;33"
Substitua 33
por 34
por azul no nobg. Ainda mais simples, para torná-lo nofg on nobg:
LS_COLORS+=:ow=
Para tornar sua alteração permanente, anexe-a ao seu .profile:
echo "export LS_COLORS+=":ow=01;33"" >> ~/.profile
Para visualizar as regras não relacionadas à extensão de LS_COLORS:
echo "$LS_COLORS" | sed "s/:/\n/g" | grep -v "\*."
sed
coloca cada regra em uma linha e grep
remove as regras começando por *.".
Para explore as ls
cores 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. }
Em seguida,
LS_COLORS="$C:ow=38;5;250;48;5;025";t
Conforme afirmado em outra resposta (a de Thomas Nyman), 38;5;
é o prefixo para primeiro plano x-term 256 cores e 48;5;
para 256 cores de fundo x-term. No entanto, 256 cores não são suportadas por todos os terminais.
Veja também -O que as cores diferentes significam em ls? – no AskUbuntu .
Comentários
- Descobri que colocava
LS_COLORS+=':ow=01;33'
em meu~/.zshrc
ajudou a desabilitar a cor de fundo para diretórios em um git-repo.Isso está em uma máquina Windows 10 com uma distribuição Pengwin-WSL. Agora todos os diretórios dentro do git-repo são legíveis.
Resposta
Bem, isso significa que esta pasta tem permissões se você executa isto:
сhmod og-w AU_LI
ele removerá bgcolor 🙂
Resposta
Para corrigir isso, experimente ow parâmetro para 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
Agora você adiciona o ow (OTHER_WRITABLE
) opção
~export 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:ow=0" ~ls -l
Comentários
- Se desejar alterar a cor por meio de .dir_colors, você pode adicionar
OTHER_WRITABLE 34;43
. Agradecimentos a: gist.github.com/jmoz/280005/…
Resposta
Você pode alterar o tom de verde no Putty para tornar o texto legível.
Abra o Putty e vá para a janela \ Colors, selecione “ANSI Green”, defina para um verde mais escuro (R: 0 G: 70 B: 0).
38;5;
inicia um código de cor de primeiro plano de 256 cores do xterm.48;5;
inicia um código de cor de fundo xterm de 256 cores. Ciano em minha saída dircolors é38;5;51
não36
embora o resultado seja o mesmo.