Perché grep aggiunge il codice ANSI \e[K
al suo output colorato? Non riesco a capire il punto, ma ovviamente gli sviluppatori possono farlo. È un codice terminale ANSI / VT100 che viene utilizzato per "Cancella linea dalla posizione corrente del cursore alla fine della linea" .
In un caso marginale, grep può far "svanire" il testo dal display del terminale. Per esempio:
echo -e "ab\rc"
echo -e "ab\rc" |grep --color=always "c"
Il semplice eco visualizza :,cb
ma il display colorato mostra:c
Il testo codificato sottostante è: echo -e 'ab\r\033[01;31m\033[Kc\033[m\033[K'
Tuttavia, senza i \e[K
codici, echo -e 'ab\r\033[01;31mc\033[m'
funziona come previsto!
Qual è il motivo dell'inclusione di questi \e[K
codici da parte di grep . Sto scrivendo uno script per consentire la sovrapposizione di un secondo passaggio colorizing , come in: c=--color=always; ls $c /bin/gzip | grep $c 'z'
. quindi ho bisogno di capire perché Grep usa \e[K
.