Existe uma maneira de deixar o terminal mostrar a sequência de escape bruta? (por exemplo, aqueles usados para controlar a cor)
Me deparei com esta pergunta do UNIX.SE e quero filtrar a saída "vermelha" ( Filtrar saída do comando por cor )
No entanto, os comandos nas respostas não funcionam para minha saída (por exemplo, o vermelho git status
para "Arquivos não rastreados"). Eles funcionam para os exemplos lá echo -e '\033[00;31mtest\033[00m' | grep --color=none '[[:cntrl:]]'
. A filtragem com grep --color=none '[[:cntrl:]]'
funciona na minha saída, mas também mostra texto com outras cores.
Acho que o vermelho que vejo deve ser um vermelho diferente de \e[31m
.
Existe uma maneira de permitir que o terminal produza sequências de escape brutas? (para que eu possa usar a sequência correta para filtrar a cor vermelha específica que vejo)
(bash, Ubuntu 18.04)
-- Atualizar --
Para esclarecimento, minha pergunta é sobre como mostrar a sequência de escape bruta.
A resposta do @egmont usando script
funcionou. Basicamente, eu só precisava usar script
para gravar a saída e usar uma das respostas da pergunta acima para encontrar o texto de cor vermelha, por exemplo:
script /tmp/a.txt
git status
exit
cat /tmp/a.txt | grep -Eo $'\e\\[31m[^\e]*\e\\[[03]?m'
A outra resposta / comentários também estão corretos ao apontar que meu uso de git
não obteve a cor através do tubo.
Você adivinha errado.
Você não fez
git
pensar que está escrevendo em um terminal, então não está produzindo cores.Leitura adicional
console-decode-ecma48
". Guia de nosh de no . Programas.Não tenho certeza se entendi sua pergunta corretamente.
Eu acho que você quer examinar o que um determinado utilitário (como
git status
) envia para o emulador de terminal. Estou certo?Inicie o
script
utilitário, ele faz um log exatamente disso. Então liguegit status
ou o que quiser. Em seguida, saia doscript
shell do , ele o notificará que um arquivo chamadotypescript
foi criado. Abra este arquivo em um editor de texto para encontrar as sequências que você está procurando.