Проверка, сколько цветов мои поддержки эмулятора терминала

Я думал здесь, что основная проблема при выполнении watch, аргумент дан"sh -c"что означает если псевдоним ll не определяется в sh(dash shell's) среда затем это не развернет его. Но я был неправ и дело обстоит не так, ответ Chris выше является правильным.

21
01.11.2011, 17:34
3 ответа

Значение $TERM не дает много информации о количестве поддерживаемых цветов. Много терминалов рекламируют себя как xterm, и мог бы поддерживать любое количество цветов (2, 8, 16, 88 и 256 общие ценности).

Можно запросить значение каждого цвета с OSC 4 ; c ; ? BEL управляющая последовательность. Если номер цвета c поддерживается, и если терминал поймет эту управляющую последовательность, то терминал будет огрызаться со значением цвета. Если номер цвета не поддерживается или если терминал не понимает эту управляющую последовательность, терминал ни на что не отвечает. Вот bash/zsh отрывок, чтобы запросить, поддерживается ли цвет 42 (перенаправление к/от терминалу при необходимости):

printf '\e]4;%d;?\a' 42
if read -d $'\a' -s -t 1; then … # color 42 is supported

Среди популярных терминалов xterm и терминалов на основе библиотеки VTE (терминал Gnome, Терминатор, Xfce4-терминал, …) поддерживают эту управляющую последовательность; rxvt, консоль, экран и tmux не делают.

Я не знаю о более прямом пути.

20
27.01.2020, 19:43
  • 1
    Спасибо @Gilles. Это выглядит большим. Позвольте мне спросить что read -d $'\a' -s -t 1 ? вход –  Amelio Vazquez-Reina 02.11.2011, 00:50
  • 2
    @intrpc Read до первого \a (символ звонковой сигнализации), не повторяя вход, с тайм-аутом 1 секунды. –  Gilles 'SO- stop being evil' 02.11.2011, 00:55
  • 3
    @l0b0 tput colors запрашивает terminfo базу данных. Возможности состоят в том, что Вы имеете TERM=xterm. Xterm может поддерживать по крайней мере 2, 8, 16, 88 или 256 цветов в зависимости от версии и на компиляции - и опции во время выполнения, но terminfo база данных может только сохранить одно значение. Можно установить, например. TERM=xterm+256color, но затем Вы будете раздражаться, когда Вы войдете в систему машины, которая не имеет этой записи в ее termcap/terminfo базе данных. –  Gilles 'SO- stop being evil' 02.11.2011, 13:59
  • 4
    @l0b0 Ваш канал, очевидно, не имеет никакого отношения к терминалу. Необходимо распечатать к терминалу (printf … >/dev/tty) и затем читайте из терминала (read … </dev/tty). Xterm отвечает на OSC 4; …; ? BEL последовательность путем введения нажатий клавиш. –  Gilles 'SO- stop being evil' 24.02.2012, 17:01
  • 5

Существует сценарий жемчуга, 256colors2.pl, который отобразит все цвета на Вашем терминале.

11
27.01.2020, 19:43

Вы можете использовать

$ tput colors

На моей установке debian tput входит в пакет ncurses-bin, который устанавливается по умолчанию.

9
27.01.2020, 19:43

Теги

Похожие вопросы