Colorindo globalmente o terminal por Regex

Colorindo globalmente o terminal por Regex

Eu sei que muitos programas usam cores - (vim, ack, color-ls, para citar alguns), mas ainda há muitos casos em que você fica preso ao preto e branco.

Existem scripts que irão colorir a saída com base em expressões regulares (ou seja, "fazer qualquer coisa que corresponda a 'cachorro' vermelho"), mas eles devem ser invocados com barras verticais - por exemplo: "> gato meu arquivo | cor cachorro vermelho" e isso é inútil para qualquer coisa interativo.

O que estou procurando é algo que conecte o emulador de terminal (ou um terminal que realmente faça isso) e colora qualquer coisa que corresponda a um determinado regex, independente do shell ou programa que estou usando atualmente. Se isso funcionar também com ncurses, seria incrível. Tenho muitos programas monocromáticos e seria ótimo se eu pudesse especificar uma lista de palavras-chave para destacar/colorir quando elas aparecem ou são digitadas.

Eu uso o console Guake que provavelmente usa o Terminal GNOME, não sei se o GNOME já possui esse recurso.

Responder1

A versão curta é:por que, sim, você pode canalizar a saída do shell, como qualquer outro programa.

A partir daí, você pode usar o que quiser, tipo, digamos

$ bash | sed "$(echo -e "s@dog@\e[31mdog\e[0m@g; s@more here@more here@g;")"

Pensei em adicionar meu 'arco-íris'. Aproveitar:

for((b=0;$b<8;b++)); do echo -ne "\e[4${b}m4$b : "; \
  for((f=0;$f<8;f++)); do echo -ne "\e[3${f}m3${f}"; done; echo -e "\e[0m"; done

Responder2

Ainda estou procurando um emulador de terminal Linux com esse recurso, mas para quem está lendo isto e está no macOS X:

  • PegariTerm2(você vai querer isso de qualquer maneira se estiver fazendo muito trabalho de linha de comando no OS X), vá para "Configurações > Perfis > Avançado" e clique em "Editar" em "Gatilhos". Lá você pode adicionar um gatilho com uma expressão regular como ^.*\[ERROR\].*$e definir a ação para "Destacar texto" e o parâmetro para algo como "Primeiro plano vermelho".

Responder3

Provavelmente existem soluções melhores do que esta, mas você pode conseguir resolver algo simples com o esperado:http://expect.nist.gov/. Existem bibliotecas esperadas disponíveis para muitas outras linguagens de programação/script se você preferir evitar o TCL.

Em geral, o TCL é usado para automatizar programas interativos, mas também é possível torná-los interativos.

Eu daria a você um código para começar, mas eu não o uso há um bom tempo.

Responder4

Tenho certeza de que o KDE Konsole (pelo menos a versão KDE3) poderia fazer isso, mas não vejo suporte no KDE4.

Vocêpodefaça algo com grep assim:

grep -C 99999 --color <whatever>

Isso deve destacar as correspondências, mas ter tanto contexto que seja o arquivo inteiro.

informação relacionada