为什么 grep 将 ANSI 代码添加\e[K到其彩色输出中?我看不出它的意义,但显然开发人员可以。它是一个ANSI/VT100 终端代码,用于“清除从当前光标位置到行尾的行”。
在边缘情况下,grep 会导致文本从终端显示中“消失”。例如:
echo -e "ab\rc"
echo -e "ab\rc" |grep --color=always "c"
Run Code Online (Sandbox Code Playgroud)
简单的回显显示: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'按预期工作!
grep 包含这些\e[K代码的原因是什么。我正在写一个脚本来允许一个叠加的第二彩色化通,如:c=--color=always; ls $c /bin/gzip | grep $c 'z'。所以我需要了解为什么 grep 使用\e[K.