Ketika saya menjalankan perintah dari terminal yang mencetak keluaran berwarna (seperti ls
atau gcc
), keluaran berwarna dicetak. Dari pemahaman saya, proses ini sebenarnya mengeluarkan kode escape ANSI, dan terminal memformat warnanya.
Namun, jika saya menjalankan perintah yang sama dengan proses lain (misalnya aplikasi C kustom) dan mengarahkan output ke output aplikasi itu sendiri, warna ini tidak akan bertahan.
Bagaimana sebuah program memutuskan apakah akan menampilkan teks dengan format warna atau tidak? Apakah ada variabel lingkungan?
Jawaban yang Diterima:
Sebagian besar program seperti itu hanya mengeluarkan kode warna ke terminal secara default; mereka memeriksa untuk melihat apakah keluaran mereka adalah TTY, menggunakan isatty(3)
. Biasanya ada opsi untuk mengganti perilaku ini:nonaktifkan warna di semua kasus, atau aktifkan warna di semua kasus. Untuk GNU grep
misalnya, --color=never
menonaktifkan warna dan --color=always
memungkinkan mereka.
Di shell Anda dapat melakukan tes yang sama menggunakan -t
test
operator:[ -t 1 ]
akan berhasil hanya jika keluaran standar adalah terminal.