Установить/Сбросить

Установить/Сбросить

Я могу изменить цвет через настройки, но как изменить цвет фона и цвет текста терминала через командную строку?

решение1

На некоторых терминалах, совместимых с 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

скриншот1

Скриншот

В зависимости от того, хотите ли вы применить цвет к переднему плану или к фону, используйте <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'

скриншот3

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

скриншот4

Того же результата можно добиться, используя значения 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'

скриншот5

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

скриншот6

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

скриншот7

решение2

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

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

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

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

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

Заметка 2:Цвета переднего плана и фона могут различаться в зависимости от конфигурации терминала ине все цвета поддерживаются.

Установить/Сбросить

  • 0: Сбросить/удалить все атрибуты модификатора, переднего плана и фона:echo -e "\e[0mNormal Text"
  • 1: Жирный/Яркий:echo -e "Normal \e[1mBold"
  • 2: Дим: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: Сброс/удаление dim: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"

Передний план

  • 39: По умолчанию (обычно зеленый, белый или светло-серый):echo -e "Default \e[39mDefault"
  • 30: Черный: echo -e "Default \e[30mBlack"(лучше всего сочетается с фоновым цветом: echo -e "Default \e[30;107mBlack on white")
  • 31: Красный (не использовать с зеленым фоном)
  • 32: Зеленый
  • 33: Желтый
  • 34: Синий
  • 35: Пурпурный/фиолетовый
  • 36: Голубой
  • 37: Светло-серый
  • 90: Темно-серый
  • 91: Светло-красный
  • 92: Светло-зеленый
  • 93: Светло-желтого
  • 94: Светло-синий
  • 95: Светло-пурпурный/розовый
  • 96: Светло-голубой
  • 97: Белый

Фон

  • 49: Цвет фона по умолчанию (обычно черный или синий)
  • 40: Черный
  • 41: Красный
  • 42: Зеленый
  • 43: Желтый
  • 44: Синий
  • 45: Пурпурный/фиолетовый
  • 46: Голубой
  • 47: Светло-серый (не использовать с белым передним планом)
  • 100: Темно-серый (не использовать с черным передним планом)
  • 101: Светло-красный
  • 102: Светло-зеленый (не использовать с белым передним планом)
  • 103: Светло-желтый (не использовать с белым передним планом)
  • 104: Светло-голубой (не использовать со светло-желтым передним планом)
  • 105: Светло-пурпурный/розовый (не использовать со светлым передним планом)
  • 106: Светло-голубой (не использовать с белым передним планом)
  • 107: Белый (не использовать со светлым передним планом)

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

256 вариантов цвета см. на исходной странице.

решение3

Изменение цветов по мере необходимости

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

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

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

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

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"
    

    например, чтобы установить черный цвет фона

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

gconftool-2 --set "/apps/gnome-terminal/profiles/<profile_name>/background_color" --type string black

решение4

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

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

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

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

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

Связанный контент