Por que o grep adiciona código ANSI \e[K
à sua saída colorida? Não consigo entender o motivo, mas obviamente os desenvolvedores podem. É um código de terminal ANSI / VT100 usado para "Limpar a linha da posição atual do cursor até o final da linha" .
Em um caso de franja, o grep pode fazer com que o texto desapareça da tela do terminal. Por exemplo:
echo -e "ab\rc"
echo -e "ab\rc" |grep --color=always "c"
O eco simples exibe :,cb
mas a tela colorida mostra:c
O texto codificado subjacente é: echo -e 'ab\r\033[01;31m\033[Kc\033[m\033[K'
No entanto, sem os \e[K
códigos, echo -e 'ab\r\033[01;31mc\033[m'
funciona conforme o esperado!
Qual é o motivo da inclusão desses \e[K
códigos pelo grep . Eu estou escrevendo um script para permitir a sobreposição de uma segunda passagem colorizing , como em: c=--color=always; ls $c /bin/gzip | grep $c 'z'
. então eu preciso entender por que o grep usa \e[K
.