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.