Распечатка цветов в терминале xterm
Я установил минимальный Debian, и я пытаюсь все настроить самостоятельно, поэтому я пытаюсь настроить свой терминал Xterm по умолчанию, придав ему несколько цветов, после некоторых исследований я обнаружил, что это можно сделать либо путем редактирования файла.Xresources. поэтому я могу дать первые 16 цветов в коде Hexa (#numbers) или отредактировав файл.bashrc. После того, как некоторые исследования кажутся вторым решением более динамичным, потому что я могу указать цвета файлов по расширениям, проблема в том, что все статьи в сети используют очень странный цветовой код:
.gz 01;31
.bz2 01;31
.deb 07;31
.rpm 01;31
.jar 01;31
Я хочу знать, есть ли способ использовать цвет кода RGB или цвет гекса, чтобы иметь больше гибкости с моими списками каталогов и файлов.
3 ответа
AFAIK, поддержка RGB отсутствует, эмуляторы терминала ограничены отображением ограниченного набора цветов (палитра с 64 комбинациями переднего и заднего плана, если я не ошибаюсь). Если вас беспокоит простота использования, вы всегда можете объявить несколько переменных для предопределенных цветов, например:
readonly BLACK_FONT_BLACK_BACKGROUND='30;40'
readonly BLACK_FONT_RED_BACKGROUND='30;41'
readonly BLACK_FONT_GREEN_BACKGROUND='30;42'
readonly BLACK_FONT_YELLOW_BACKGROUND='30;43'
...
readonly WHITE_FONT_CYAN_BACKGROUND='37;46'
readonly WHITE_FONT_WHITE_BACKGROUND='37;47'
И использовать их позже, как:
.gz $BLACK_FONT_YELLOW_BACKGROUND
Ниже приведена таблица с цветовыми кодами для переднего плана и фона:
Color Foreground Background
-------------------------------
black 30 40
red 31 41
green 32 42
yellow 33 43
blue 34 44
magenta 35 45
cyan 36 46
white 37 47
-------------------------------
Если создание всех переменных имен цветов вручную слишком утомительно, вы можете использовать следующий скрипт на python:
colors = ['black', 'red', 'green', 'yellow', 'blue', 'magenta', 'cyan', 'white'];
index = 0
for x in ["{0}_FONT_{1}_BACKGROUND='{2};{3}'".format(colors[i].upper(), colors[j].upper(), i + 30, j + 40) for i in xrange(0, 8) for j in xrange(0, 8)]:
print x.ljust(38) + "#" + str(index)
index += 1
Извините, но вы не можете использовать цветовой код RBG (или HSV, или HCL). Вы можете найти документацию с:
$ man 5 dir_colors
Как отмечает Leonardo Fontenelle, место, где можно начать читать о GNU ls
окраска dir_colors
страница справочника. Используемые числа, такие как 01;31
являются константами, связанными с тем, что на странице руководства называется "цветовые последовательности ISO 6429 (ANSI)". На самом деле страница справочника немного более неясна, чем должна быть:
- константы - это параметры, используемые в управляющей последовательности ISO 6429 SGR (установка графического представления). Фактический стандарт очень подробный (см. ECMA-48).
- 01 является стандартным кодом для жирного шрифта (в руководстве к нему обращаются, используя ориентированные на Linux "яркие цвета *").
- как отмечает higuaro, коды 30-37 и 40-47 образуют цветовую палитру; все цвета, отображаемые на терминале в любой момент, взяты из текущей палитры.
- существует несколько способов обновления цветовой палитры, используемой
xterm
; ни один из них не имеет прямого отношения кls
конфигурации, потому что числа, используемые для ссылки на палитру, сами по себе не содержат информацию о цвете. - Вы можете отобразить цвета и видео атрибуты, используя ncurses
tput
полезность, например,tput setaf 7
, - некоторые (относительно) недавние
ls
конфигурации используют дополнительные цветовые коды вне палитры 30-37 / 40-47, например, дляaixterm
16-цветная функция илиxterm
88 цветов или 256 цветов.dir_colors
страница руководства не упоминает об этом.