Я могу изменить цвет через настройки, но как я могу изменить цвет фона и цвет текста терминала через командную строку?
command-line
color-management
TechJhola
источник
источник
dconf
. Ответ на подобный вопрос я уже писал ранее: askubuntu.com/a/628129/295286\033[00;34mFOO\033[00m
Ответы:
На некоторых XTerm / ANSI-совместимых терминалах (например,
xterm
иgnome-terminal
) вы можете устанавливать цвета, используя палитру, превышающую палитру 8/16 цветов по умолчанию (например, используя палитру 88 цветов, 256 цветов или 16777216 цветов (RGB) , оба ,xterm
иgnome-terminal
поддерживают как 256-цвета и 16777216-цвета (RGB) палитры); Имейте в виду, что оболочка может переопределить это (это так, например, дляzsh
).Вот скрипт для перечисления цветов в 256-цветовой палитре вместе с их цветовым кодом ANSI в XTerm / ANSI-совместимых терминалах с поддержкой 256-цветовой палитры:
В зависимости от того, хотите ли вы применить цвет к переднему плану или к фону, используйте
<fg_bg>
значение38
или48
(соответственно) в следующей команде:Например, чтобы установить цвет переднего плана (
<fg_bg>
=38
) на красный (<ANSI_color_code>
=196
) и цвет фона (<fg_bg>
=48
) на черный (<ANSI_color_code>
=0
):Необходимо перерисовать подсказку, используя,
printf '\e[K'
чтобы цвет фона применялся ко всей строке и чтобы цвет переднего плана применялся к курсору:То же самое можно сделать, используя значения RGB вместо цветовых кодов ANSI в совместимом терминале; в зависимости от того, хотите ли вы применить цвет к переднему плану или к фону, используйте
<fg_bg>
значение38
или48
(соответственно) в следующей команде:Например, чтобы установить цвет переднего плана (
<fg_bg>
=38
) на красный (<R>
=255
,<G>
=0
,<B>
=0
) и цвет фона (<fg_bg>
=48
) на черный (<R>
=0
,<G>
=0
,<B>
=0
):Опять же, необходимо перерисовать приглашение, используя
printf '\e[K'
для того, чтобы цвет фона применялся ко всей строке и чтобы цвет переднего плана применялся к курсору:Используя любой из этих методов, вы можете использовать
printf '\e[0m'
для сброса всех атрибутов:источник
xterm
иgnome-terminal
распознают \ e [38/48; 2; R; G; Bm истинные цветовые escape-последовательности; однакоxterm
округляет фактический цвет до ближайшего в его 256-цветовой палитре.gnome-terminal
отображает точный истинный цвет, заданный в escape-последовательности.xterm
), если курсор оказывается на самом правом краю (визуально отображается в крайнем правом столбце, но логически уже за этим, поскольку символ уже напечатан в крайнем правом столбце), эта последняя буква удаляется. См., Например, bugzilla.gnome.org/show_bug.cgi?id=740789 или savannah.gnu.org/bugs/?36831 .Информация, найденная на этой странице , за исключением столбца предварительного просмотра:
Последовательности состоят из символа Escape (часто обозначаемого как «
^[
» или «<Esc>
»), за которым следуют некоторые другие символы: «^[FCm
» (гдеFC
одно из чисел в маркированном списке ниже).В
bash
, то Escкод может быть одним из следующих способов :\e
\033
(Восьмеричное)\x1B
(Шестнадцатеричное)Примечание 1:
\e[0m
последовательность « » удаляет все атрибуты (форматирование и цвета). Это может быть хорошей идеей, чтобы добавить его в конце каждого цветного текста.Примечание 2: цвета переднего плана и фона могут различаться в зависимости от конфигурации терминала, и поддерживаются не все цвета .
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
: Blink (не работает в большинстве терминалов, кроме XTerm):echo -e "Normal \e[5mBlink"
7
: Обратный / инвертированный:echo -e "Normal \e[7minverted"
8
: Hidden (полезно для конфиденциальной информации):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"
передний план
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 вариантов цвета см. На исходной странице.
источник
Измените цвета случайно
Если предполагается случайное изменение цвета :
Вы можете использовать команду setterm :
из цветов, которые вы можете выбрать (как передний, так и задний):
для большего количества вариантов:
Измените настройки своего профиля (цвета)
В 14.04 я не нашел возможности использовать
dconf
для установки цветов или терминала. Однако вы можете использоватьgconftool
Сначала вам нужно получить имя вашего профиля:
Затем, чтобы установить цвет текста вашего профиля:
например, чтобы установить цвет текста на белый
То же самое с цветом фона:
например, чтобы установить цвет фона на черный
В качестве альтернативы, чтобы задать название цвета (цветов), вы можете просто использовать
white
илиgreen
из той же палитры, что и команда setterm, например:источник
dconf write /org/gnome/terminal/legacy/profiles:/:<profile_id>/background-color "'rgb(0,0,0)'"
не менее, сделал свое дело .gconftool-2
(для Ubuntu 14.04 и, возможно, нескольких последующих выпусков), илиdconf
илиgsettings
в более новых версиях Ubuntu измените настройки gnome-терминала и сразу же вступите в силу для всех вкладок и окон одного и того же профиля. Я не думаю, что OP искал такое поведение.Различные цветовые коды, которые используются для получения цветного вывода, также можно использовать для получения цветного фона :
Поэтому следующая команда окрашивает мой фон в красный:
В зависимости от оболочки, эмулятора терминала и т. Д. Вам может не понадобиться
-e
.источник
Посмотрите ответ kos для переключения переднего плана или фона на определенный цвет палитры, или даже прямой цвет RGB в некоторых терминалах. Эффект такой последовательности сохраняется до тех пор, пока не будет выбран другой цвет (или он не вернется к значению по умолчанию)
Другой подход, поддерживаемый некоторыми эмуляторами терминала, заключается в переопределении точных значений RGB для цветов переднего плана и фона терминала по умолчанию с использованием escape-последовательностей OSC 10/11:
Это может длиться намного дольше (до тех пор, пока не будет отменено другим OSC 10/11 или не будет сброшено через OSC 110/111), но, в отличие от подхода dconf, это по-прежнему влияет только на текущий терминал.
источник