Colorir todas as saídas do terminal

3

Existe uma maneira de tornar toda a saída do meu terminal colorida de forma personalizada? Ex: Se eu emitir o comando: sudo apt-get update - Eu vou pegar uma coluna de texto e o que eu quero é uma maneira de colorir o RED se houver alguma palavra como "ERROR" neste texto, e VERDE qualquer palavra como "DONE" ou "FINALIZADO".

Isso é apenas um exemplo, e eu entendo que isso poderia estragar a saída colorida de outros programas, apenas curioso se isso for possível.

Estou usando o ZSH no momento, mas aceito respostas para cada emulador de terminal.

    
por w1r3dh4ck3r 08.04.2016 / 21:01

1 resposta

1

Você pode usar sed para substituir cadeias de caracteres "ERROR", "DONE" e "FINISHED" delimitadas por limite de palavra com a mesma cadeia de caracteres entre seqüências de escape de cor ANSI (você pode aliasar o comando em ~/.bashrc por conveniência; como você pode ver, isso funciona em Zsh, mas como é o terminal que interpreta as seqüências de escape, qualquer shell em execução em um terminal compatível com ANSI / VT100):

sudo apt-get update |& sed 's/\bERROR\b/\x1B[1;31m&\x1B[0m/; s/\bDONE\b/\x1B[1;32m&\x1B[0m/; s/\bFINISHED\b/\x1B[1;34m&\x1B[0m/'
sudo apt-get update |&
    sed '
        s/\bERROR\b/\x1B[1;31m&\x1B[0m/
        s/\bDONE\b/\x1B[1;32m&\x1B[0m/
        s/\bFINISHED\b/\x1B[1;34m&\x1B[0m/
    '

    
por kos 10.04.2016 / 05:03