Saída de cor do comando linux similar a 'watch -d' para destacar diferenças?

2

Estou no início do script de shell, etc., e um pouco desafiado a encontrar a maneira correta de colorir a saída repetida de um comando, semelhante à opção -d no comando watch.

Eu quero ver as mudanças de lsof e alguns outros comandos. Isso significa que quero apenas que as linhas alteradas / novas estejam em vermelho (em vez de realçadas com um plano de fundo branco e destacando todas as linhas a seguir). Existe uma maneira elegante de fazê-lo com o diff ou com qualquer outro comando?

Exemplo: uma linha vermelha mostra uma nova conexão via SSH.

(Eu sei, eu poderia GREP para ESTABELECIDO aqui, mas nem todo comando que eu quero assistir me dá uma palavra-chave para procurar. Então eu tenho que procurar por uma linha nova / alterada na saída.)

    
por awado 05.02.2016 / 23:04

2 respostas

1

Você pode usar ANSI seqüências de escape. Para definir uma cor e um estilo desejados, há uma sintaxe 3[#m em que # pode ser um conjunto válido de números separados por ponto-e-vírgula.

Você pode definir cores como

CLEAR="3[0m"
GREEN="3[0;32m"
BLUE="3[0;34m"
PURPLE="3[0;35m"
RED="3[0;31m"
YELLOW="3[1;33m"

E use-os como echo -e "${GREEN}Updated${CLEAR}"

Confira aqui mais referências

    
por 06.02.2016 / 01:21
1

Finalmente, encontrei uma maneira de alcançá-lo. Eu queria evitar operações de arquivo (tmpfs e tal) por motivos de desempenho e latência. O truque é dizer a dwdiff ou wdiff em seus dois argumentos o que a saída de um comando é e era dentro da mesma iteração. A substituição do processo foi minha ajuda:

while true; do p1=$p2; p2=$(clear; iotop -ob -n1); 
    dwdiff -y "0" -1 -c <(echo "$p1") <(echo "$p2"); sleep 1; done

O -y "0" remove o espaço antes da palavra alterada para manter as colunas bem alinhadas. $p1 e $p2 são usados para manter o escopo das substituições do processo <(...) . Fornecer a saída nas substituições diretamente não funcionou para mim. Recebi esta dica do presente post.

Talvez haja uma solução muito mais simples e eu fiquei muito complicado, afinal. Sinta-se à vontade para postar!

    
por 13.02.2016 / 02:51

Tags