Existe alguma maneira de manter colorização de texto passado através do tubo |para head, tail, less, etc.?
Existe alguma maneira de manter colorização de texto passado através do tubo |para head, tail, less, etc.?
Respostas:
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.
git. Descobri que ele possui uma configuração semelhante (por exemplo git config color.diff always) que mantém a coloração.
git diffsaída como entrada, pois sempre emitirá os códigos de escape ANSI.
grep "string" file.txt | headpara garantir que o resultado do grep fosse colorido, mudei paragrep "string" file.txt --color=always | head
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)
color=automodo (para fazer o programa pensar que a saída vai para o console em vez do pipe)?
head, tailetc., detecta que está sendo canalizado para outro programa (para gerar dados sem cores, etc.).
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).