grep --color ANSI kodu ESC ekler [K - Görüntülenen metni değiştirebilir


9

Grep neden \e[Krenkli çıktısına ANSI kodu ekliyor ? Bunun amacını göremiyorum, ama açıkça geliştiriciler görebiliyor. "Geçerli imleç konumundan satır sonuna kadar satırı temizle" için kullanılan bir ANSI / VT100 Terminal kodudur .

Saçak durumunda grep, terminal ekranından metnin "kaybolmasına" neden olabilir. Örneğin:

echo -e "ab\rc"
echo -e "ab\rc" |grep --color=always "c"

Basit yankı şunları görüntüler: cbancak renkli ekran şunları gösterir:c

Temel kodlanmış metin: echo -e 'ab\r\033[01;31m\033[Kc\033[m\033[K' Ancak, \e[Kkodlar olmadan, echo -e 'ab\r\033[01;31mc\033[m'beklendiği gibi çalışır!

Grep'in bu \e[Kkodları dahil etmesinin nedeni nedir ? Bir aktarma için izin vermek için bir komut dosyası yazıyorum ikinci colorizing geçişte olduğu gibi: c=--color=always; ls $c /bin/gzip | grep $c 'z'. bu yüzden grep'in neden kullandığını anlamam gerekiyor \e[K.

Yanıtlar:


11

GREP_COLORSOrtam değişkenini ayarlayarak bu davranışı değiştirebilirsiniz :

export GREP_COLORS=ne
echo -e "ab\rc" | grep --color=always "c"

Gönderen grepadam sayfası:

          ne     Boolean  value  that prevents clearing to the end of line
                 using Erase in Line (EL) to Right  (\33[K)  each  time  a
                 colorized  item  ends.   This  is  needed on terminals on
                 which EL is not supported.  It  is  otherwise  useful  on
                 terminals  for  which  the back_color_erase (bce) boolean
                 terminfo capability  does  not  apply,  when  the  chosen
                 highlight colors do not affect the background, or when EL
                 is too slow or causes too much flicker.  The  default  is
                 false (i.e., the capability is omitted).

İlk olarak, daha önce değiştirilmiş olması durumunda, hattın geri kalanının arka planını doğru renge ayarlamak için yapılır (varsayılan olarak değil; biri bunu kendi ayarlarında yapmak için ayarlayabilir).

Ayrıca, ayarlanabilecek diğer seçeneklerle de oynamak isteyebilirsiniz GREP_COLORS; tüm ayrıntılar için kılavuz sayfasına bakınız.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.