2012-06-18 7 views
6

Я пишу сценарий оболочки, который я хотел бы использовать 256-цветную поддержку, когда она присутствует. В простом мире xterm просто установил бы переменную среды TERM в xterm-256color, и я бы воспользовался tput colors, чтобы найти поддержку.Как скрипт оболочки может определить, запущен ли он в окне xterm с поддержкой 256 цветов?

Но мы живем в несправедливом мире. xtermTERM до xterm даже при запуске с TERM=xterm-256color. Есть ли что-нибудь, что я могу сделать из сценария оболочки, чтобы узнать, работает ли скрипт с stdout, связанным с tty, запущенным в 256-цветном окне xterm? Если это так, я могу самостоятельно установить переменную среды.

ответ

2

Вы можете проверить версию xterm - $ XTERM_VERSION. Хотя я не уверен, из какой версии xterm начал поддерживать 256 цветов. Другие терминалы (например, gnome-terminal) ведут себя аналогично xterm, но также устанавливают переменную COLORTERM для исправления имени терминала (gnome-256color).

0

Поскольку большинство xterm -s окрашиваются в эти дни, я бы предположить, что терминал имеет 256 цветов, и сделать сценарий принять вариант (возможно -monochrome или -no-colors) в противном случае.

Кстати, я также вижу причину некоторого силового пользователя, чтобы заставить поведение -monochrome: на очень медленных соединениях (подумайте о межконтинентальных ssh) может оказаться полезным отключить цвета, чтобы снизить пропускную способность.

+0

Большинство терминов поддерживают только 16 цветов. –