Ketika saya menjalankan suatu program (misalnya grep
atau ls
) tanpa pager, hasilnya berwarna. Namun ketika saya menjalankannya piping outputnya less
, tidak ada warna yang ditampilkan.
Sebagai contoh, perintah ini menampilkan keluaran berwarna:
grep -r something
tetapi ini tidak:
grep -r something | less
Mengapa? Bagaimana saya bisa melihat warna less
?
command-line
less
Mohammad Reza Rezwani
sumber
sumber
grep --color=always "search string" * | less -R
tapi saya cenderung menggunakannyamost
saat iniless
. JUGA: gnu.org/software/src-highlite adalah stabilo warna (kurang karya juga)python-pygments
?Jawaban:
Ada dua masalah disini:
ls
— yang secara otomatis mendeteksi dukungan warna — tidak menemukan dukungan dari pipaless
diatur untuk hanya menampilkan kode warna secara default.Keduanya bisa diatasi tetapi agak kikuk:
Ini tidak
ls
spesifik. Banyak perintah yang mendukung warna juga memiliki argumen override.Jawaban yang sedikit lebih dalam
ls
adalah memeriksa apakah STDOUT milik terminal nyata atau tidak. Ketika Anda menyambungkan berbagai hal, STDOUT diatur ke STDIN dari perintah selanjutnya.Anda dapat melihat ini sedang bekerja dalam
ls
kode sumber . Menggunakanisatty
perintah (antarmuka POSIX inti) untuk mengetahui situasinya:Apakah warna diaktifkan secara default:
Apakah kami mencoba menampilkan dalam beberapa kolom:
grep
melakukan hal yang sangat mirip, kecuali diganti secara eksplisit, itu akan mendeteksi dukungan warna, denganisatty
:sumber
--color
argumen:ack-grep -i select --color | less -R
-C
argumen.Jika Anda tertarik pada warna secara
less
lebih umum, Anda mungkin ingin melihatnyalesspipe.sh
. Lihat, misalnya, http://freecode.com/projects/lesspipe .Ini juga akan mewarnai skrip shell, perl skrip, dll. Mirip dengan editor teks, tetapi tanpa menggunakan program "preprocessing" untuk melakukan pewarnaan.
sumber