Saya kadang-kadang ingin menyalurkan keluaran berkode warna dari suatu proses, mis. grep… tetapi ketika saya menyalurkannya ke proses lain, mis. sed, kode warna hilang…
Apakah ada cara untuk menjaga agar kode ini tetap utuh?
Berikut adalah contoh yang kehilangan output berwarna:
echo barney | grep barney | sed -n 1,$\ p
Jawaban yang Diterima:
Banyak program yang menghasilkan keluaran berwarna mendeteksi jika mereka menulis ke TTY, dan mematikan warna jika tidak. Ini karena kode warna mengganggu saat Anda hanya ingin menangkap teks, jadi kode tersebut mencoba "melakukan hal yang benar" secara otomatis.
Cara paling sederhana untuk menangkap keluaran warna dari program seperti itu adalah dengan memerintahkannya untuk menulis warna meskipun tidak terhubung ke TTY. Anda harus membaca dokumentasi program untuk mengetahui apakah ia memiliki opsi itu. (mis., grep
memiliki --color=always
pilihan.)
Anda juga dapat menggunakan expect
skrip unbuffer
untuk membuat pseudo-tty seperti ini:
echo barney | unbuffer grep barney | sed -n 1,$\ p