Yanıtlar:
Renkli çıktı üreten birçok program, bir TTY'ye yazıp yazmadıklarını algılar ve değilse, renkleri kapatın. Bunun nedeni, yalnızca metni yakalamak istediğinizde renk kodlarının can sıkıcı olmasıdır, bu nedenle otomatik olarak "doğru olanı yapmayı" denerler.
Böyle bir programdan renk çıktısını almanın en basit yolu, bir TTY'ye bağlı olmasa bile, renk yazmasını söylemektir. Bu seçeneğe sahip olup olmadığını öğrenmek için programın belgelerini okumak zorunda kalacaksınız. (örneğin grep
sahiptir --color=always
seçeneği.)
Ayrıca böyle bir sözde tty oluşturmak için expect
betiği de kullanabilirsiniz unbuffer
:
echo barney | unbuffer grep barney | sed -n 1,$\ p
unbuffer
bilgi için teşekkürler , bu benim IRC bot çıkış kabuk gibi çıkış yardımcı olur.
Benim için çalışıyor; (mevcut MingW ortamında)
echo barney | grep --color=always barney | sed -n '1,$p'
**barney**
# barney kırmızı metin olarak görüntüleniyor
$ grep --version
GNU grep 2.5.4
$ sed --version
GNU sed version 4.2.1
tree
is colorized a-la dircolors if the LS_COLORS environment variable is set and output is to tty
... Belki (?) Bir TTY'ye veya bunun gibi genel bir geçici çözüme yol açtığını düşünerek bir boruyu kandırmanın bir yolu vardır. .
man tree
... Bu da benzer bir seçeneğe sahip, -C
... belki de renk kaçış kodları çıkaran programlar için ortak bir özelliktir ..
less
tree -C ~/ |less -R
ls -lR --color=always . |less -R