Existe alguma maneira de manter a colorização do texto passado pelo canal |
para head
, tail
, less
, etc.?
Responder1
Presumo que você esteja canalizando ls
e queira preservar os códigos de cores dos terminais. Você pode dizer ls --color=always
(em vez do padrão --color=auto
), o que preservará os códigos, mas isso não garantirá que aquilo para o qual você está direcionando saiba como entendê-los.
Se você usar glark
em vez grep
disso, tentará exibir com cores.
Se você usar less
com -R
ele tentará exibir com cores.
Responder2
Depende do programa que gera a saída no pipe.
head
, tail
, etc não são os que removem as cores, é o programa que gera os dados que normalmente verifica se a saída vai para o console (colorido), um arquivo ou canal (não colorido)
eu encontreioutra pergunta e resposta da SUmostrando como mentir para canalizar programas para a saída como se estivessem enviando a saída para um console (emulando um console com unbuffer
)
Responder3
No Mac OS X man ls
menciona a CLICOLOR_FORCE
variável de ambiente.
Adicionar export CLICOLOR_FORCE=1
a ~/.zshrc
ou ~/.bashrc
, dependendo do shell que você usa, mantém as cores ao canalizar ls
para outros comandos como less
, head
e tail
.
Responder4
Considerar
bat
Uma alternativa para
cat
Instalar
brew install bat
--args --flags como
--language
e--theme
Exemplos
head | bat --language=zsh -n -p --theme=gruvbox-dark
file.py | bat --language=py -n -p --theme=gruvbox-dark