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 ls
e 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 glark
vez grep
dele, tentará exibir com cores.
Se você usar less
com -R
ele, 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 diff
saída como entrada, pois sempre emitirá os códigos de escape ANSI.
grep "string" file.txt | head
para 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
, tail
etc 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=auto
modo (para fazer o programa pensar que a saída vai para o console em vez do pipe)?
head
, tail
etc., detecta que está sendo canalizado para outro programa (para gerar dados sem cores, etc.).
head
,tail
etc 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).