Idenya adalah agar aplikasi saya tahu untuk tidak mewarnai keluaran jika program tidak dapat mencetak, katakanlah, mencatat keluaran dari melalui tugas cron ke file, tidak perlu mencatat keluaran berwarna, tetapi ketika berjalan secara manual, saya suka melihat output berwarna.
Untuk kasus penggunaan ini, program apa yang biasanya dilakukan (misalnya GNU ls atau GNU grep with --color=auto
) adalah menggunakan warna jika outputnya menuju ke terminal, dan tidak ada warna sebaliknya. Terminal yang tidak mendukung sekuens pengubah warna ANSI cukup langka sehingga dapat diterima pengguna untuk mengabaikan pilihan default. Bagaimanapun, pastikan aplikasi Anda memiliki opsi untuk mengaktifkan atau menonaktifkan warna.
Dalam skrip shell, gunakan [ -t 1 ]
untuk menguji apakah output standar adalah terminal.
# option processing has set $color to yes, no or auto
if [ $color = auto ]; then
if [ -t 1 ]; then color=yes; else color=no; fi
fi
Dari program yang menggunakan C API, panggil isatty(1)
.
# option processing has set use_color to 0 for no, 1 for yes or 2 for auto
if (use_color == 2) use_color = isatty(1);