Existe alguma maneira de manter colorização de texto passado através do tubo |
para head
, tail
, less
, etc.?
linux
pipe
gnome-terminal
Timofey Gorshkov
fonte
fonte
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).Respostas:
Eu presumo que você está usando a tubulação
ls
e deseja preservar os códigos de cores dos terminais. Você pode dizerls --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
vezgrep
dele, tentará exibir com cores.Se você usar
less
com-R
ele, tentará exibir com cores.fonte
git
. Descobri que ele possui uma configuração semelhante (por exemplogit 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
)fonte
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.).