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.