2012-06-18 27 views
6

Tôi đang viết một kịch bản lệnh shell mà tôi muốn sử dụng hỗ trợ 256 màu khi có mặt. Chỉ trong một thế giới, xterm chỉ cần đặt biến môi trường TERM thành xterm-256color và tôi muốn sử dụng tput colors để khám phá hỗ trợ.Làm thế nào một kịch bản lệnh có thể cho biết nó có đang chạy trong cửa sổ xterm với hỗ trợ 256 màu không?

Nhưng chúng ta đang sống trong một thế giới bất công. xterm bộ TERM đến xterm ngay cả khi được khởi chạy với TERM=xterm-256color. Có bất cứ điều gì tôi có thể làm từ bên trong một kịch bản shell để khám phá xem kịch bản đang chạy với stdout kết nối với một tty đang chạy trong một cửa sổ 2562 màu xterm? Nếu vậy, tôi có thể tự đặt biến môi trường.

Trả lời

2

Bạn có thể kiểm tra phiên bản xterm - $ XTERM_VERSION. Mặc dù tôi không chắc chắn từ phiên bản xterm nào bắt đầu hỗ trợ 256 màu. Các thiết bị đầu cuối khác (ví dụ gnome-terminal), hoạt động tương tự như xterm nhưng cũng thiết lập biến COLORTERM để sửa tên thiết bị đầu cuối (gnome-256color).

0

Vì hầu hết xterm -s được tô màu những ngày này, tôi cho rằng thiết bị đầu cuối có 256 màu và làm cho tập lệnh chấp nhận tùy chọn (có thể là -monochrome hoặc -no-colors).

BTW, tôi cũng thấy lý do cho một số người dùng có hiệu lực buộc hành vi -monochrome: trên các kết nối rất chậm (nghĩ về liên lục địa ssh) có thể hữu ích khi vô hiệu hóa màu sắc để giảm băng thông.

+0

hỗ trợ lâu dài nhất chỉ có 16 màu. –

Các vấn đề liên quan