Как я могу распечатать текст с помощью кого-либо из 256 цветов, которые позволяет терминал?

Я использую dwm и tmux. Прежде, чем учиться использовать tmux, я имел бы несколько терминалов открытыми для разных вещей и имел бы их в различных тегах. Теперь я могу выполнить все в одной tmux сессии, под единственным тегом, и могу отсоединить и повторно прикрепить, не теряя состояние, если я должен перезапустить X.

6
12.06.2013, 06:53
3 ответа

Можно взглянуть в TERM настройки. Возможно, что это установлено на меньший затем способная строка. Для тестирования цветов, можно выполнить GNU msgcat. Попробуйте, например:

echo $TERM
msgcat --color=test
TERM=xterm-256color
msgcat --color=test

Или используйте цикл @Ignacio Vazquez-Abrams's вместо msgcat.

Для получения дополнительной информации о том, как, и что установить, взглянули на, например:

7
27.01.2020, 20:23

Прекратите использовать управляющие коды и используйте setaf возможность terminfo вместо этого.

$ for i in $(seq 0 $(tput colors) ) ; do tput setaf $i ; echo -n "█" ; done ; tput setaf 15 ; echo
5
27.01.2020, 20:23
  • 1
    я только получаю восемь цветов тот путь, тем не менее, и терминал, предположительно, поддерживает 256. Где сделал все другие цвета, идут? –  fouric 12.06.2013, 07:53
  • 2
    Ваш терминал только поддерживает 8 цветов затем. Попробуйте другой терминал. –  Ignacio Vazquez-Abrams 12.06.2013, 07:54
  • 3
    я попробовал LXTerm, Xterm и терминал Linux (и с и без tmux), и получил тот же результат на всех трех. Вы уверены, что Linux ttys самостоятельно не поддерживает 256 цветов? –  fouric 12.06.2013, 08:07
  • 4
    tput colors на моей консоли привел к 8. Таким образом, я сказал бы, что это не уникально для Вас. –  Ignacio Vazquez-Abrams 12.06.2013, 08:21

TERM сообщает tput (и другим приложениям, использующим базу данных терминала), сколько цветов поддерживает ваш терминал (предположительно) и как установить для этого передний план ( setaf ) и задний план ( setab ).

Пример сценария близок, но не сбрасывается должным образом:

for i in $(seq 0 $(tput colors) ) ; do tput setaf $i ; echo -n "█" ; done ; echo ; tput op

Вот снимок экрана с xterm, чтобы проиллюстрировать:

example of tput and 256colors

Как бы то ни было, msgcat использует базу данных терминала, но затем следует некоторые жестко запрограммированные предположения о возможностях цвета терминала. Кое-что из этого требует переосмысления, например, замечая ошибку кодирования, например, в этой строке :

               (strlen (term) >= 4 && memcmp (term, "rxvt", 7) == 0)
1
27.01.2020, 20:23

Теги

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