Как я могу манипулировать цветами? [dубликат]

... добавление к исчерпывающим ответам выше:

lsusb

lsusb - это утилита для отображения информации о шинах USB в системе и устройствах, подключенных к их.

См. справочную страницу. !

54
задан 6 November 2017 в 13:07

8 ответов

Информация, найденная на этой странице, исключая столбец предварительного просмотра:

Последовательности состоят из символа Escape (часто представленного «^[» или «<Esc>»), за которым следуют другие символы: «[F3]» (где FC является одним из номеров в маркированном списке ниже).

В bash код Esc может быть любым из следующих:

] \e \033 (восьмеричный) \x1B (шестнадцатеричный)

Примечание 1: Последовательность [\e[0m "удаляет все атрибуты (форматирование и цвета). Это может быть хорошей идеей добавить его в конце каждого цветного текста.

Примечание 1: Цвета переднего плана и фона могут отличаться в зависимости от конфигурации терминала и Эта страница .

Set / Reset

0: Сбросить / удалить все атрибуты модификатора, переднего плана и фона: echo -e "\e[0mNormal Text" 1: Полужирный / Яркий: echo -e "Normal \e[1mBold" 2: Dim: echo -e "Normal \e[2mDim" 4: Подчеркнуто: echo -e "Normal \e[4mUnderlined" 5: Мигает (не работает на большинстве терминалов, кроме XTerm): echo -e "Normal \e[5mBlink" 7: Реверс / Инверсия: echo -e "Normal \e[7minverted" 8: Скрыто (полезно для конфиденциальной информации): echo -e "Normal \e[8mHidden Input" 21: Сбросить / Удалить жирный / яркий: echo -e "Normal \e[1mBold \e[21mNormal" 22: Сбросить / Удалить тусклый: echo -e "Normal \e[2mDim \e[22mNormal" 24: Сбросить / Удалить подчеркивание: echo -e "Normal \e[4mUnderlined \e[24mNormal" 25: сброс / удаление мигания: echo -e "Normal \e[5mBlink \e[25mNormal" 27: сброс / удаление обратного / инвертирования: echo -e "Normal \e[7minverted \e[27mNormal" 28: сброс / удаление скрытых: echo -e "Normal \e[8mHidden \e[28mNormal"

Foreground

0: сбросить / удалить все атрибуты модификатора, переднего плана и фона: echo -e "\e[0mNormal Text" 30: черный: echo -e "Default \e[30mBlack" (лучше всего сочетается с цветом фона: echo -e "Default \e[30;107mBlack on white") 1: Жирный / Яркий: echo -e "Normal \e[1mBold" 32: Зеленый 2: Di m: echo -e "Normal \e[2mDim" 34: Синий 4: Подчеркнуто: echo -e "Normal \e[4mUnderlined" 36: Cyan 5: Мигает (не работает в большинстве терминалы, кроме XTerm): echo -e "Normal \e[5mBlink" 90: Темно-серый 7: Реверс / Инверсия: echo -e "Normal \e[7minverted" 92: Светло-зеленый 8: Скрыт (полезно для чувствительной информации): echo -e "Normal \e[8mHidden Input" 94: Голубой 21: Сбросить / Удалить жирный / яркий: echo -e "Normal \e[1mBold \e[21mNormal" 96: Светлый голубой 22: Сброс / Удалить тусклый: echo -e "Normal \e[2mDim \e[22mNormal"

Фон

30: Черный: echo -e "Default \e[30mBlack" (лучше всего сочетается с фоновым цветом : echo -e "Default \e[30;107mBlack on white") 40: черный 32: зеленый 42: зеленый 34: синий 44: синий 36: Cyan 46: Cyan 90: темно-серый 24: сброс / удаление подчеркивания: echo -e "Normal \e[4mUnderlined \e[24mNormal" 101 : Светло-красный 25: сброс / удаление мигания: echo -e "Normal \e[5mBlink \e[25mNormal" 92: светло-зеленый 27: сброс / удаление обратного / инвертирования: echo -e "Normal \e[7minverted \e[27mNormal" 105: Светло-пурпурный / розовый (не использовать со светом переднего плана) 28: Сбросить / Удалить скрыто: echo -e "Normal \e[8mHidden \e[28mNormal" 94: Свет Blue [!d 44]

Чтобы одновременно установить цвета переднего и заднего фона, используйте форму the [form] echo -e "\e[S;FG;BGm". Например: echo -e "\e[1;97;41m" (полужирный белый передний план на красном фоне)

Для 256 параметров цвета см. Исходную страницу.

24
ответ дан 18 July 2018 в 14:11

Измените цвета на случайной основе

Если это предназначено для изменения цветов на случайной основе:

Вы можете использовать команду setterm:

setterm -term linux -back <background_colour> -fore <text_color> -clear

из цветов, вы можете выбрать из (как fore, так и фона):

black|blue|green|cyan|red|magenta|yellow|white|default

для получения дополнительных опций:

setterm -help

Измените настройки профиля (цвета)

В 14.04 я не нашел возможность использовать dconf для установки цветов или терминала. Однако вы можете использовать gconftool

Сначала вам нужно получить свое имя профиля: gconftool-2 --get /apps/gnome-terminal/global/profile_list Затем, чтобы задать цвет текста вашего профиля: gconftool-2 --set "/apps/gnome-terminal/profiles/<profile_name>/foreground_color" --type string "#FFFFFF" , например, чтобы установить цвет текста на белый. то же, что и цвет фона: gconftool-2 --set "/apps/gnome-terminal/profiles/<profile_name>/background_color" --type string "#000000" , например, чтобы установить цвет фона на черный

ALTERatively, чтобы установить имя цвета (ов), вы можете просто использовать white или green, из та же палитра, что и команда setterm, например:

gconftool-2 --set "/apps/gnome-terminal/profiles/<profile_name>/background_color" --type string black
27
ответ дан 18 July 2018 в 14:11

На некоторых терминалах, совместимых с XTerm / ANSI (например, xterm и gnome-terminal), вы можете устанавливать цвета, используя палитру, большую, чем палитра 8/16 цветов по умолчанию (например, с использованием 88-цветных, 256- цвета или 16777216 цветов (RGB), и xterm, и gnome-terminal поддерживают как 256 цветов, так и палитру 16777216 цветов (RGB); что это оболочка может переопределить это (например, для zsh).

Вот сценарий для отображения цветов в палитре с 256 цветами и их цветового кода ANSI в XTerm / ANSI- совместимые терминалы с поддержкой 256-цветной палитры:

#!/bin/bash for((i=16; i<256; i++)); do printf "\e[48;5;${i}m%03d" $i; printf '\e[0m'; [ ! $((($i - 15) % 6)) -eq 0 ] && printf ' ' || printf '\n' done

В зависимости от того, хотите ли вы применить цвет на переднем плане или на задний план используйте значение <fg_bg> для 38 или 48 (соответственно) в следующей команде:

printf '\e[<fg_bg>;5;<ANSI_color_code>m'

Например, чтобы установить цвет переднего плана (<fg_bg> = 38) на красный (<ANSI_color_code> = 196) и цвет фона (<fg_bg> = 48) на черный (<ANSI_color_code> = 0):

printf '\e[38;5;196m Foreground color: red\n' printf '\e[48;5;0m Background color: black\n'

screenshot1 [!d4]

Необходимо перерисовать приглашение с помощью printf '\e[K', чтобы цвет фона применим ко всей строке, и чтобы цвет переднего плана применялся к курсор:

screenshot1 [!d4]

То же самое можно сделать, используя значения RGB вместо цветовых кодов ANSI в совместимом терминале; в зависимости от того, хотите ли вы применить цвет на переднем плане или на фоне, используйте значение <fg_bg> для 38 или 48 (соответственно) в следующей команде:

printf '\e[<fg_bg>;2;<R>;<G>;<B>m'

Для Например, чтобы установить цвет переднего плана (<fg_bg> = 38) на красный (<R> = 255, <G> = 0, <B> = 0) и цвет фона (<fg_bg> = 48) до черного (<R> = 0, <G> = 0, <B> = 0):

printf '\e[38;2;255;0;0m Foreground color: red\n' printf '\e[48;2;0;0;0m Background color: black\n'

Опять же, необходимо перерисовать приглашение с помощью printf '\e[K', чтобы цвет фона применим к всей строке и для того, чтобы цвет переднего плана применим к курсору:

Используя оба метода, вы можете использовать printf '\e[0m' для сброса всех атрибутов:

screenshot5 [!d21]

32
ответ дан 18 July 2018 в 14:11

Различные цветовые коды, используемые для получения цветного выхода, также могут использоваться для получения цветных фонов:

40 black 41 red 42 green 43 yellow 44 blue 45 magenta 46 cyan 47 white

Поэтому следующая команда меняет мой фон:

$ echo -e '\e[0;41m'

В зависимости от оболочки, эмулятора терминала и т. д. вам может не понадобиться -e.

5
ответ дан 18 July 2018 в 14:11

Информация, найденная на этой странице, исключая столбец предварительного просмотра:

Последовательности состоят из символа Escape (часто представленного «^[» или «<Esc>»), за которым следуют другие символы: «[F3]» (где FC является одним из номеров в маркированном списке ниже).

В bash код Esc может быть любым из следующих:

] \e \033 (восьмеричный) \x1B (шестнадцатеричный)

Примечание 1: Последовательность [\e[0m "удаляет все атрибуты (форматирование и цвета). Это может быть хорошей идеей добавить его в конце каждого цветного текста.

Примечание 1: Цвета переднего плана и фона могут отличаться в зависимости от конфигурации терминала и Эта страница .

Set / Reset

0: Сбросить / удалить все атрибуты модификатора, переднего плана и фона: echo -e "\e[0mNormal Text" 1: Полужирный / Яркий: echo -e "Normal \e[1mBold" 2: Dim: echo -e "Normal \e[2mDim" 4: Подчеркнуто: echo -e "Normal \e[4mUnderlined" 5: Мигает (не работает на большинстве терминалов, кроме XTerm): echo -e "Normal \e[5mBlink" 7: Реверс / Инверсия: echo -e "Normal \e[7minverted" 8: Скрыто (полезно для конфиденциальной информации): echo -e "Normal \e[8mHidden Input" 21: Сбросить / Удалить жирный / яркий: echo -e "Normal \e[1mBold \e[21mNormal" 22: Сбросить / Удалить тусклый: echo -e "Normal \e[2mDim \e[22mNormal" 24: Сбросить / Удалить подчеркивание: echo -e "Normal \e[4mUnderlined \e[24mNormal" 25: сброс / удаление мигания: echo -e "Normal \e[5mBlink \e[25mNormal" 27: сброс / удаление обратного / инвертирования: echo -e "Normal \e[7minverted \e[27mNormal" 28: сброс / удаление скрытых: echo -e "Normal \e[8mHidden \e[28mNormal"

Foreground

0: сбросить / удалить все атрибуты модификатора, переднего плана и фона: echo -e "\e[0mNormal Text" 30: черный: echo -e "Default \e[30mBlack" (лучше всего сочетается с цветом фона: echo -e "Default \e[30;107mBlack on white") 1: Жирный / Яркий: echo -e "Normal \e[1mBold" 32: Зеленый 2: Di m: echo -e "Normal \e[2mDim" 34: Синий 4: Подчеркнуто: echo -e "Normal \e[4mUnderlined" 36: Cyan 5: Мигает (не работает в большинстве терминалы, кроме XTerm): echo -e "Normal \e[5mBlink" 90: Темно-серый 7: Реверс / Инверсия: echo -e "Normal \e[7minverted" 92: Светло-зеленый 8: Скрыт (полезно для чувствительной информации): echo -e "Normal \e[8mHidden Input" 94: Голубой 21: Сбросить / Удалить жирный / яркий: echo -e "Normal \e[1mBold \e[21mNormal" 96: Светлый голубой 22: Сброс / Удалить тусклый: echo -e "Normal \e[2mDim \e[22mNormal"

Фон

30: Черный: echo -e "Default \e[30mBlack" (лучше всего сочетается с фоновым цветом : echo -e "Default \e[30;107mBlack on white") 40: черный 32: зеленый 42: зеленый 34: синий 44: синий 36: Cyan 46: Cyan 90: темно-серый 24: сброс / удаление подчеркивания: echo -e "Normal \e[4mUnderlined \e[24mNormal" 101 : Светло-красный 25: сброс / удаление мигания: echo -e "Normal \e[5mBlink \e[25mNormal" 92: светло-зеленый 27: сброс / удаление обратного / инвертирования: echo -e "Normal \e[7minverted \e[27mNormal" 105: Светло-пурпурный / розовый (не использовать со светом переднего плана) 28: Сбросить / Удалить скрыто: echo -e "Normal \e[8mHidden \e[28mNormal" 94: Свет Blue [!d 44]

Чтобы одновременно установить цвета переднего и заднего фона, используйте форму the [form] echo -e "\e[S;FG;BGm". Например: echo -e "\e[1;97;41m" (полужирный белый передний план на красном фоне)

Для 256 параметров цвета см. Исходную страницу.

25
ответ дан 24 July 2018 в 20:20

Измените цвета на случайной основе

Если это предназначено для изменения цветов на случайной основе:

Вы можете использовать команду setterm:

setterm -term linux -back <background_colour> -fore <text_color> -clear

из цветов, вы можете выбрать из (как fore, так и фона):

black|blue|green|cyan|red|magenta|yellow|white|default

для получения дополнительных опций:

setterm -help

Измените настройки профиля (цвета)

В 14.04 я не нашел возможность использовать dconf для установки цветов или терминала. Однако вы можете использовать gconftool

Сначала вам нужно получить свое имя профиля: gconftool-2 --get /apps/gnome-terminal/global/profile_list Затем, чтобы задать цвет текста вашего профиля: gconftool-2 --set "/apps/gnome-terminal/profiles/<profile_name>/foreground_color" --type string "#FFFFFF" , например, чтобы установить цвет текста на белый. то же, что и цвет фона: gconftool-2 --set "/apps/gnome-terminal/profiles/<profile_name>/background_color" --type string "#000000" , например, чтобы установить цвет фона на черный

ALTERatively, чтобы установить имя цвета (ов), вы можете просто использовать white или green, из та же палитра, что и команда setterm, например:

gconftool-2 --set "/apps/gnome-terminal/profiles/<profile_name>/background_color" --type string black
27
ответ дан 24 July 2018 в 20:20
  • 1
    Это должно быть двойным тире в исходной команде setterm. – user1770201 13 November 2015 в 19:01
  • 2
    Работал 14.04, но не на 16.04 (бета, не уверен, если это причина) ... Тем не менее, dconf write /org/gnome/terminal/legacy/profiles:/:<profile_id>/background-color "'rgb(0,0,0)'" сделал трюк. – Janaka Bandara 17 April 2016 в 20:50
  • 3
    Не работает на ubuntu 1704, он выглядит плохо – Wax Cage 8 August 2017 в 01:29

На некоторых терминалах, совместимых с XTerm / ANSI (например, xterm и gnome-terminal), вы можете устанавливать цвета, используя палитру, большую, чем палитра 8/16 цветов по умолчанию (например, с использованием 88-цветных, 256- цвета или 16777216 цветов (RGB), и xterm, и gnome-terminal поддерживают как 256 цветов, так и палитру 16777216 цветов (RGB); что это оболочка может переопределить это (например, для zsh).

Вот сценарий для отображения цветов в палитре с 256 цветами и их цветового кода ANSI в XTerm / ANSI- совместимые терминалы с поддержкой 256-цветной палитры:

#!/bin/bash for((i=16; i<256; i++)); do printf "\e[48;5;${i}m%03d" $i; printf '\e[0m'; [ ! $((($i - 15) % 6)) -eq 0 ] && printf ' ' || printf '\n' done

В зависимости от того, хотите ли вы применить цвет на переднем плане или на задний план используйте значение <fg_bg> для 38 или 48 (соответственно) в следующей команде:

printf '\e[<fg_bg>;5;<ANSI_color_code>m'

Например, чтобы установить цвет переднего плана (<fg_bg> = 38) на красный (<ANSI_color_code> = 196) и цвет фона (<fg_bg> = 48) на черный (<ANSI_color_code> = 0):

printf '\e[38;5;196m Foreground color: red\n' printf '\e[48;5;0m Background color: black\n'

screenshot1 [!d4]

Необходимо перерисовать приглашение с помощью printf '\e[K', чтобы цвет фона применим ко всей строке, и чтобы цвет переднего плана применялся к курсор:

screenshot1 [!d4]

То же самое можно сделать, используя значения RGB вместо цветовых кодов ANSI в совместимом терминале; в зависимости от того, хотите ли вы применить цвет на переднем плане или на фоне, используйте значение <fg_bg> для 38 или 48 (соответственно) в следующей команде:

printf '\e[<fg_bg>;2;<R>;<G>;<B>m'

Для Например, чтобы установить цвет переднего плана (<fg_bg> = 38) на красный (<R> = 255, <G> = 0, <B> = 0) и цвет фона (<fg_bg> = 48) до черного (<R> = 0, <G> = 0, <B> = 0):

printf '\e[38;2;255;0;0m Foreground color: red\n' printf '\e[48;2;0;0;0m Background color: black\n'

Опять же, необходимо перерисовать приглашение с помощью printf '\e[K', чтобы цвет фона применим к всей строке и для того, чтобы цвет переднего плана применим к курсору:

Используя оба метода, вы можете использовать printf '\e[0m' для сброса всех атрибутов:

screenshot5 [!d21]

33
ответ дан 24 July 2018 в 20:20
  • 1
    И xterm, и gnome-terminal распознают последовательности escape-последовательности \ e [38/48; 2; R; G; Bm; однако xterm округляет фактический цвет до ближайшего в его 256-цветной палитре. gnome-terminal отображает точный истинный цвет, указанный в escape-последовательности. – egmont 13 February 2016 в 12:34
  • 2
    \ e [K опасно; в некоторых эмуляторах (например, xterm), если курсор находится на самом правом краю (визуально отображается в крайнем правом столбце, но логически уже выше этого, поскольку символ уже был напечатан в крайнем правом столбце), эта последняя буква лишается , См. bugzilla.gnome.org/show_bug.cgi?id=740789 или savannah.gnu.org/bugs/?36831 . – egmont 13 February 2016 в 12:41
  • 3
    Исправление: если вы испускаете \ e [K в начале строки (в начале подсказки, а не в конце ее), то, конечно, это безопасно. (Не будет работать с многострочным приглашением или командой.) – egmont 13 February 2016 в 12:44
  • 4
    @egmont Спасибо за полезную информацию, я вижу, что на GNOME Bugzilla, который отмечен как фиксированный, так ли это? Я не могу проверить это в этот самый момент, поэтому я сделаю это позже, чтобы проверить, все ли в этом случае (если только вы не ответите первым) и включите эту информацию в ответ. – kos 13 February 2016 в 14:17
  • 5
    Yup новейшие версии gnome-terminal не разделяют этот символ. Является ли это правильное поведение сомнительным. В конце концов, графические эмуляторы терминала имитируют некоторые древние устройства. Должны ли мы имитировать свои плохие проектные решения (как xterm здесь), или мы должны переопределять (как мы это делаем в gnome-terminal)? Это сложный вопрос без единого правильного ответа. – egmont 13 February 2016 в 18:35

Различные цветовые коды, используемые для получения цветного выхода, также могут использоваться для получения цветных фонов:

40 black 41 red 42 green 43 yellow 44 blue 45 magenta 46 cyan 47 white

Поэтому следующая команда меняет мой фон:

$ echo -e '\e[0;41m'

В зависимости от оболочки, эмулятора терминала и т. д. вам может не понадобиться -e.

5
ответ дан 24 July 2018 в 20:20

Другие вопросы по тегам:

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