Saída grep colorida sendo fragmentada pelo comando watch

3

Estou tentando executar watch , para que ele mostre a saída do meu comando grep, enquanto estou executando os arquivos e alterando as coisas.

A maneira usual de fazer isso funciona bem, mas falta cores:

watch grep 'something' **/*

... e desde que eu quero cores, eu fiz isso:

watch grep 'something' **/* --color=always

Ainda é feio, porque o relógio não analisa os códigos de escape que fazem as cores funcionarem. Então eu achei isso:

watch --color grep 'something' **/* --color=always

E bem ... não funciona. A saída é fragmentada / misturada de alguma forma estranha. Mostra-me apenas uma única linha por algum motivo, enquanto sem watch --color o grep produz cerca de 20.

Como posso fazer com que watch funcione com a saída colorida de grep ?

Caso isolado:

Usando o seguinte:

mkdir grep_test; cd grep_test
echo "asdsad\nasdasd\nsaasdasd" > file1 
echo "test\n123\ntest" > file2

Eu crio dois arquivos e executo o seguinte comando:

grep test * --color=always

Que funciona como esperado e saídas (com cores e outros):

file2:test
file2:test

Mas quando uso o relógio:

watch --color 'grep test * --color=always'

Não produz nada. Sem a opção --color , ela mostra a saída correta, embora sem as saídas ANSI interpretadas. Estou rodando isso no Fedora 25, na sessão do tmux com o zsh dentro.

Além disso, watch -v output é:

watch from procps-ng 3.3.10
    
por Błażej Michalik 21.02.2017 / 12:32

1 resposta

2

Acontece que o watch funciona com a saída em cores. Mas especificamente para grep você deve fazer alguma solução alternativa (de acordo com grep -color adiciona o código ANSI ESC [K - Isso pode alterar o texto exibido )

watch --color "GREP_COLORS=ne grep --color=always .* *"
    
por 26.11.2018 / 13:56