Existe alguma maneira de manter o texto passado na cabeça, cauda, ​​menos etc. para ser colorido?

26

Existe alguma maneira de manter colorização de texto passado através do tubo |para head, tail, less, etc.?

Timofey Gorshkov
fonte
Algum programa de saída específico? Depende do programa enviar os dados através do canal. head, tailetc não são os que removem as cores, é o programa que gera os dados que normalmente verificam se a saída está indo para o console (colorido), um arquivo ou canal (não colorido).
precisa saber é o seguinte

Respostas:

15

Eu presumo que você está usando a tubulação lse deseja preservar os códigos de cores dos terminais. Você pode dizer ls --color=always(em vez do padrão de --color=auto), que preservará os códigos, mas isso não garantirá que o que você está procurando saiba como entendê-los.

Se você usar em glarkvez grepdele, tentará exibir com cores.

Se você usar lesscom -Rele, tentará exibir com cores.

phogg
fonte
6
Eu estou indo de git. Descobri que ele possui uma configuração semelhante (por exemplo git config color.diff always) que mantém a coloração.
Timofey Gorshkov
1
@Errandir O problema dessa configuração é que ele interromperá qualquer script ou comando que use a git diffsaída como entrada, pois sempre emitirá os códigos de escape ANSI.
KurzedMetal
@ Errandir, obrigado! Eu não tenho scripts que dependem de uma saída limpa do git diff, então isso funciona para mim! Obrigado !
precisa
Eu usei isso para o grep: grep "string" file.txt | headpara garantir que o resultado do grep fosse colorido, mudei paragrep "string" file.txt --color=always | head
Emil Stenström
13

Depende do programa que gera a saída no tubo.

head, tailetc não são os que removem as cores, é o programa que gera os dados que geralmente verificam se a saída está indo para o console (colorido), um arquivo ou canal (não colorido)

Encontrei outra sessão de perguntas e respostas de SU mostrando como mentir para canalizar programas para saída como se estivessem enviando saída para um console (emulando um console com unbuffer)

KurzedMetal
fonte
Existe alguma maneira de manter a coloração no color=automodo (para fazer o programa pensar que a saída vai para o console em vez do pipe)?
Timofey Gorshkov
@KurzedMetal Como um programa, por exemplo head, tailetc., detecta que está sendo canalizado para outro programa (para gerar dados sem cores, etc.).
Jorge Bucaran 01/03
@JorgeBucaran stackoverflow.com/a/7601564/236871
KurzedMetal