为什么grep会\e[K
在其彩色输出中添加ANSI代码?我看不出要点,但显然开发人员可以。这是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'
可以正常工作!
grep包含这些\e[K
代码的原因是什么?我正在编写一个脚本,以允许覆盖第二遍着色,如:c=--color=always; ls $c /bin/gzip | grep $c 'z'
。所以我需要理解为什么grep使用\e[K
。