Почему grep добавляет код ANSI \e[K
в свой цветной вывод? Я не вижу смысла в этом, но, очевидно, разработчики могут. Это код терминала ANSI / VT100, который используется для «очистки строки от текущей позиции курсора до конца строки» .
В крайнем случае, grep может вызвать «исчезновение» текста с дисплея терминала. Например:
echo -e "ab\rc"
echo -e "ab\rc" |grep --color=always "c"
Простое эхо отображает:, cb
но цветной дисплей показывает:c
Основной кодированный текст: echo -e 'ab\r\033[01;31m\033[Kc\033[m\033[K'
Однако, без \e[K
кодов, echo -e 'ab\r\033[01;31mc\033[m'
работает как ожидалось!
В чем причина включения этих \e[K
кодов в grep? Я пишу сценарий , чтобы для перекладки из второго окрашивающего прохода , как в: c=--color=always; ls $c /bin/gzip | grep $c 'z'
. поэтому мне нужно понять, почему использует grep \e[K
.