Изменение цвета текста и фона терминала?

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

92
задан 6 November 2017 в 02:07

5 ответов

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

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

Вы можете использовать команду 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 /  / foreground_color" --type string "#FFFFFF"
     

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

    То же самое с цветом фона:

     gconftool-2 --set "/ apps / gnome-terminal / profiles /  / background_color" -строка типа "# 000000"
     

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

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

gconftool-2 --set "/apps/gnome-terminal/profiles/<profile_name>/background_color" --type string black
31
ответ дан 22 November 2019 в 23:19

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

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

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

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

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

5
ответ дан 22 November 2019 в 23:19

См. Ответ kos для переключения переднего плана или фона на определенный цвет палитры, или даже прямой цвет RGB в некоторых терминалах. Эффект такой последовательности длится до тех пор, пока не будет выбран другой цвет (или он не будет возвращен к цвету по умолчанию).

Другой подход, поддерживаемый некоторыми эмуляторами терминала, заключается в переопределении точных значений RGB терминала. по умолчанию цвета переднего плана и фона с использованием escape-последовательностей OSC 10/11:

echo -ne '\e]10;#123456\e\\'  # set default foreground to #123456
echo -ne '\e]11;#abcdef\e\\'  # set default background to #abcdef

Это, вероятно, будет длиться намного дольше (пока не будет отменено другим OSC 10/11 или сброшено через OSC 110/111), но в отличие от при подходе dconf это по-прежнему влияет только на текущий терминал.

4
ответ дан 22 November 2019 в 23:19

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

Последовательности состоят из символа Escape (часто обозначаемого как « ^ [] ”Или” ”), за которым следуют некоторые другие символы:” ^ [FCm ”(где FC - одно из чисел в маркированном списке ниже

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

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

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

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

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

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

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

  • 39 : По умолчанию (обычно зеленый, белый) или светло-серый): echo -e "Default \ e [39mDefault"
  • 30 : Black: echo -e "Default \ e [30mBlack" (лучше всего сочетается с фоном) color: echo -e "По умолчанию \ e [30; 107mЧерный на белом" )
  • 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 : белый (не используйте не использую с l ight foreground)

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

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

44
ответ дан 22 November 2019 в 23:19

На некоторых XTerm/ANSI-совместимых клеммах (например, xterm и gnome-терминале) можно задавать цвета, используя палитру, большую, чем стандартная 8/16-цветная палитра (например, используя 88-цветную, 256-цветную или 16777216-цветную (RGB) палитру; оба терминала xterm и gnome Terminal поддерживают как 256-цветовую, так и 16777216-цветовую палитру (RGB); имейте в виду, что оболочка может перекрыть эту палитру (так происходит в случае e. g. для 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

screenshot1

screenshot

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

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

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

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

screenshot3

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

screenshot4

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

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

Например, для установки цвета переднего плана (=38) на красный (=255, =0, =0) и цвет фона (=48) до черного (=0, =0, =0):

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

screenshot5

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

screenshot6

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

screenshot7

62
ответ дан 22 November 2019 в 23:19

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

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