Pode haver algo mais acontecendo. ls
não deve usar cores, a menos que pense estar conectado a algo interativo. Não deve colorir as coisas quando você canaliza para outro programa.
Um alias geralmente é uma má idéia, porque você nunca pode se livrar dessa opção e se acostuma a configurações pessoais que talvez não consiga levar consigo para outra máquina em que você precise trabalhar. Se você precisar desativá-lo para canalizá-lo para outra coisa, use o interruptor desse tubo. Mas, as cores não devem estar lá em um cano.
Para ls
, veja se o seu suporta a LS_COLORS
variável de ambiente. O trapd00r / LS_COLORS mostra como isso funciona. dircolors permite ajustar minuciosamente as cores e por tipo de arquivo. Se você não definir, LS_COLORS
mas a cor estiver ativada, ls
fará várias chamadas do sistema para descobrir os tipos e atributos de arquivo, para que ele possa descobrir o que colorir. As pessoas por trás de Sherlock descobriram que a configuração LS_COLORS
pode evitar tudo isso e melhorar a velocidade em 40 vezes . Leia os detalhes sangrentos para ver o que encontraram.
Eu faço todos os tipos de arquivo usarem as cores padrão:
$ export LS_COLORS='bd=0:ca=0:cd=0:di=0:do=0:ex=0:pi=0:fi=0:ln=0:mh=0:no=0:or=0:ow=0:sg=0:su=0:so=0:st=0:tw=0:'
Aqui está o arquivo LS_COLORS que eu forneci para os dircolors:
BLK 0
CAPABILITY 0
CHR 0
DIR 0
DOOR 0
EXEC 0
FIFO 0
FILE 0
LINK 0
MULTIHARDLINK 0
NORMAL 0
ORPHAN 0
OTHER_WRITABLE 0
SETGID 0
SETUID 0
SOCK 0
STICKY 0
STICKY_OTHER_WRITABLE 0
Para grep
, veja se o seu suporta GREP_COLORS
ou GREP_OPTIONS
.
ls
egrep
ao canalizar, você não precisa fazer nada, porque--color=auto
já desativa a coloração quando sua saída é um tubo ou, na verdade, qualquer coisa, menos um tty; isso é o que 'auto' significa. Da mesma forma, o FreeBSDls -G
ou 'CLICOLOR' é 'desativado se a saída não for direcionada para um terminal, a menos que ... CLICOLOR_FORCE ...'.