ทำไม grep จึงเพิ่มรหัส ANSI \e[K
ลงในเอาท์พุตสี ฉันไม่เห็นจุดของมัน แต่เห็นได้ชัดว่านักพัฒนาสามารถ มันเป็นรหัสมาตรฐาน ANSI / VT100 ร์มินัลที่ใช้ในการ"ล้างเส้นจากตำแหน่งเคอร์เซอร์ปัจจุบันที่จะสิ้นสุดของเส้น"
ในกรณีที่มีขอบ grep สามารถทำให้ข้อความ "หายไป" จากจอแสดงผลขั้ว ตัวอย่างเช่น:
echo -e "ab\rc"
echo -e "ab\rc" |grep --color=always "c"
echoง่ายแสดง: cb
แต่หน้าจอcolorizedแสดง: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'
เช่น: ดังนั้นผมจึงจำเป็นต้องเข้าใจ\e[K
ความหมายว่าทำไม grep