Apakah ada cara untuk menjaga agar teks tetap dikirimkan ke kepala, ekor, kurang, dll agar diwarnai?

26

Apakah ada cara untuk menjaga pewarnaan teks melewati pipa |untuk head, tail, less, dll?

Timofey Gorshkov
sumber
Adakah program keluaran spesifik? Itu tergantung pada program pengiriman data melalui pipa. head,, taildll bukan yang menghapus warna, itu program yang menghasilkan data yang biasanya memeriksa apakah output pergi ke konsol (berwarna), file atau pipa (tidak berwarna).
KurzedMetal

Jawaban:

15

Saya kira Anda akan mengirim dari lsdan ingin mempertahankan kode warna terminal. Anda bisa mengatakan ls --color=always(bukan default --color=auto), yang akan mempertahankan kode, tetapi itu tidak akan menjamin bahwa Anda ingin tahu cara memahaminya.

Jika Anda menggunakan glarkbukan grepitu akan mencoba menampilkan dengan warna.

Jika Anda menggunakannya lessdengan -Ritu akan mencoba untuk menampilkan dengan warna.

phogg
sumber
6
Saya dari pipa git. Saya menemukan bahwa ia memiliki konfigurasi serupa (mis. git config color.diff always) Yang membuat pewarnaan tetap.
Timofey Gorshkov
1
@Errandir masalah dengan konfigurasi itu adalah ia akan memecah setiap skrip atau perintah yang menggunakan git diffoutput sebagai input karena ia akan selalu mengeluarkan kode pelarian ANSI.
KurzedMetal
@Errandir, terima kasih! Saya tidak memiliki skrip yang bergantung pada keluaran bersih dari git diff jadi ini bekerja untuk saya !! Terima kasih !
Ashutosh Jindal
Saya menggunakan ini untuk grep: grep "string" file.txt | headuntuk memastikan hasil dari grep diwarnai saya hanya mengubahnya kegrep "string" file.txt --color=always | head
Emil Stenström
13

Itu tergantung pada program yang menghasilkan output dalam pipa.

head,, taildll bukan yang menghapus warna, itu program yang menghasilkan data yang biasanya memeriksa apakah output pergi ke konsol (berwarna), file atau pipa (tidak berwarna)

Saya menemukan SU T&J lain yang menunjukkan cara membohongi program perpipaan ke keluaran seolah-olah mereka mengirimkan keluaran ke konsol (meniru konsol dengan unbuffer)

Logam Kurzed
sumber
Apakah ada cara untuk menjaga pewarnaan dalam color=automode (untuk membuat program berpikir bahwa output masuk ke konsol bukan pipa)?
Timofey Gorshkov
@KurzedMetal Bagaimana suatu program, misalnya head, taildll., Mendeteksi bahwa ia sedang disalurkan ke program lain (sehingga ia dapat menghasilkan data tanpa warna, dll.).
Jorge Bucaran
@JorgeBucaran stackoverflow.com/a/7601564/236871
KurzedMetal