Warum fügt grep \e[Kseiner 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[KCodes echo -e 'ab\r\033[01;31mc\033[m'wie erwartet!
Was ist der Grund für die Aufnahme dieser \e[KCodes 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.