Warum fügt grep \e[K
seiner farbigen Ausgabe ANSI-Code hinzu ? Ich kann den Sinn nicht erkennen, aber offensichtlich können es die Entwickler. Es handelt sich um einen ANSI / VT100-Terminalcode, mit dem "Zeile von der aktuellen Cursorposition bis zum Zeilenende löschen" verwendet wird .
In einem Randfall kann grep dazu führen, dass Text von der Terminalanzeige "verschwindet". Zum Beispiel:
echo -e "ab\rc"
echo -e "ab\rc" |grep --color=always "c"
Das einfache Echo zeigt an :,cb
aber das farbige Display zeigt:c
Der zugrunde liegende codierte Text lautet: Funktioniert echo -e 'ab\r\033[01;31m\033[Kc\033[m\033[K'
jedoch ohne die \e[K
Codes echo -e 'ab\r\033[01;31mc\033[m'
wie erwartet!
Was ist der Grund für die Aufnahme dieser \e[K
Codes durch grep? Ich schreibe ein Skript, um das Überlagern eines zweiten Kolorierungsdurchlaufs zu ermöglichen , wie in : c=--color=always; ls $c /bin/gzip | grep $c 'z'
. Ich muss also verstehen, warum grep verwendet \e[K
.