Ý tưởng là để ứng dụng của tôi biết không tô màu đầu ra nếu chương trình không thể in, giả sử, ghi nhật ký đầu ra từ một công việc định kỳ vào một tệp, không cần phải ghi nhật ký màu, nhưng khi chạy thủ công, tôi muốn xem đầu ra màu.
Đối với trường hợp sử dụng này, những chương trình thường làm (ví dụ GNU ls hoặc GNU grep với --color=auto
) là sử dụng màu sắc nếu đầu ra của chúng đi đến một thiết bị đầu cuối và không có màu nào khác. Các thiết bị đầu cuối không hỗ trợ các chuỗi thay đổi màu ANSI hiếm khi đủ để người dùng của họ ghi đè lên lựa chọn mặc định. Trong mọi trường hợp, hãy đảm bảo ứng dụng của bạn có tùy chọn để bật hoặc tắt màu.
Trong tập lệnh shell, sử dụng [ -t 1 ]
để kiểm tra xem đầu ra tiêu chuẩn có phải là thiết bị đầu cuối không.
# 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
Từ một chương trình sử dụng API C, hãy gọi 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);