Когда я что-то grep, результат всегда в красном. Я знаю, что команда grep --color
печатает результат в цвете, который по умолчанию красный. Могу ли я изменить цвет?
Когда я что-то grep, результат всегда в красном. Я знаю, что команда grep --color
печатает результат в цвете, который по умолчанию красный. Могу ли я изменить цвет?
Ответы:
Вы можете изменить цвет подсветки grep
, используя переменную окружения GREP_COLORS
, которую вы можете установить следующим образом:
export GREP_COLORS='ms=01;31'
Числа могут стилизовать текст, изменить цвет переднего плана или цвет фона или изменить шрифты.
Начальными условиями для всех GREP_COLORS
параметров являются стиль текста по умолчанию, шрифт и цвета терминала. Сброс любого из них вернет значения по умолчанию терминала, а не любые из grep
значений по умолчанию.
ᴀ;ʙ;…
- ;
разделяет числовые параметры , которые вы хотите объединить (например, жирный желтый на черном фоне текст сочетает в себе варианты 1
, 33
и 40
в 1;33;40
)+ᴇꜰꜰᴇᴄᴛ
- turned включается, когда вы используете эту числовую опцию-ᴇꜰꜰᴇᴄᴛ
- ᴇꜰꜰᴇᴄᴛ отключается при использовании этой числовой опцииcolor
, green
, cyan
, И grey
- в разделе «Стиль текста», это относится к цвету переднего планаcolors
- в разделе «Стиль текста» это относится как к цвету переднего плана, так и к цвету фонаthis color
- в разделе «Цвета переднего плана» это относится к цвету переднего плана; в разделе «Цвет фона» это относится к цвету фонаПустая строка или 0
сбрасывает все стили текста и сбрасывает оба цвета по умолчанию, но шрифт по умолчанию не сбрасывается.
┏━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┓
┃ ### ┃ GNOME Terminal ┃ xterm ┃ non-GUI TTY ┃
┡━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━┩
│ │ «reset style+colors» │ «reset style+colors» │ «reset style+colors» │
│ 0 │ «reset style+colors» │ «reset style+colors» │ «reset style+colors» │
├─────┼─────────────────────────┼─────────────────────────┼───────────────────────┤
│ 1 │ +bold, +brighter color │ +bold, +brighter color │ +brighter color, │
│ │ │ │ -forced grey │
│ 2 │ +fainter color │ +fainter color │ +forced grey │
│ 3 │ +italic │ +italic │ +forced green │
│ │ │ │ ● overrides 2 and 4 │
│ 4 │ +underline │ +underline │ +forced cyan │
│ │ │ │ ● overrides 2 │
│ 5 │ «no effect» │ +blink │ «no effect» │
│ 7 │ +invert colors │ +invert colors │ +invert colors │
│ 8 │ +invisible │ +invisible │ «no effect» │
│ │ │ ● underline appears │ │
│ 9 │ +strikethrough │ +strikethrough │ «no effect» │
├─────┼─────────────────────────┤ ├───────────────────────┤
│ 21 │ -bold, -brighter color, │ +double underline │ -brighter color, │
│ │ -fainter color ├─────────────────────────┤ -forced grey │
│ 22 │ -bold, -brighter color, │ -bold, -brighter color, │ -brighter color, │
│ │ -fainter color │ -fainter color │ -forced grey │
│ 23 │ -italic │ -italic │ -forced green │
│ 24 │ -underline │ -underline, │ -forced cyan │
│ │ │ -double underline │ │
│ 25 │ «no effect» │ -blink │ «no effect» │
│ 27 │ -invert colors │ -invert colors │ -invert colors │
│ 28 │ -invisible │ -invisible │ «no effect» │
│ 29 │ -strikethrough │ -strikethrough │ «no effect» │
└─────┴─────────────────────────┴─────────────────────────┴───────────────────────┘
┏━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┓
┃ ### ┃ GNOME Terminal ┃ xterm ┃ non-GUI TTY ┃
┡━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━┩
│ 39 │ «reset this color» │ «reset this color» │ «reset this color» │
├─────┼─────────────────────────┼─────────────────────────┼───────────────────────┤
│ 30 │ very dark grey │ black │ black │
│ 31 │ dull red │ red │ light red │
│ 32 │ dull green │ light green │ light green │
│ 33 │ dull yellow │ yellow │ yellow │
│ 34 │ greyish blue │ dark blue │ sky blue │
│ 35 │ dull purple │ purple │ purple │
│ 36 │ teal │ cyan │ cyan │
│ 37 │ light grey │ light grey │ light grey │
├─────┼─────────────────────────┼─────────────────────────┼───────────────────────┤
│ 90 │ dark grey │ dull grey │ dull grey │
│ 91 │ red │ bright red │ bright red │
│ 92 │ lime green │ bright green │ bright green │
│ 93 │ yellow │ bright yellow │ pure yellow │
│ 94 │ light greyish blue │ dull blue │ deep blue │
│ 95 │ light purple │ magenta │ magenta │
│ 96 │ cyan │ bright cyan │ bright cyan │
│ 97 │ off white │ white │ white │
├─────┴──────┬──────────────────┴─────────────────────────┴───────────────────────┤
│ 38;2;ʀ;ɢ;ʙ │ replace ʀ, ɢ, and ʙ with RGB values from 0 to 255 │
│ │ for closest supported color (non-GUI TTY has only 16 colors!) │
│ 38;5;ɴ │ replace ɴ with value from 256-color chart below │
│ │ for closest supported color (non-GUI TTY has only 16 colors!) │
└────────────┴────────────────────────────────────────────────────────────────────┘
Обратите внимание, что TTY без GUI не обеспечивает более яркую серию фоновых цветов.
┏━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┓
┃ ### ┃ GNOME Terminal ┃ xterm ┃ non-GUI TTY ┃
┡━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━┩
│ 49 │ «reset this color» │ «reset this color» │ «reset this color» │
├─────┼─────────────────────────┼─────────────────────────┼───────────────────────┤
│ 40 │ very dark grey │ black │ black │
│ 41 │ dull red │ red │ light red │
│ 42 │ dull green │ light green │ light green │
│ 43 │ dull yellow │ yellow │ yellow │
│ 44 │ greyish blue │ dark blue │ sky blue │
│ 45 │ dull purple │ purple │ purple │
│ 46 │ teal │ cyan │ cyan │
│ 47 │ light grey │ light grey │ light grey │
├─────┼─────────────────────────┼─────────────────────────┼╶╴╶╴╶╴╶╴╶╴╶╴╶╴╶╴╶╴╶╴╶╴╶┤
│ 100 │ dark grey │ dull grey │ black │
│ 101 │ red │ bright red │ light red │
│ 102 │ lime green │ bright green │ light green │
│ 103 │ yellow │ bright yellow │ yellow │
│ 104 │ light greyish blue │ dull blue │ sky blue │
│ 105 │ light purple │ magenta │ purple │
│ 106 │ cyan │ bright cyan │ cyan │
│ 107 │ off white │ white │ light grey │
├─────┴──────┬──────────────────┴─────────────────────────┴───────────────────────┤
│ 48;2;ʀ;ɢ;ʙ │ replace ʀ, ɢ, and ʙ with RGB values from 0 to 255 │
│ │ for closest supported color (non-GUI TTY has only 8 colors!) │
│ 48;5;ɴ │ replace ɴ with value from 256-color chart below │
│ │ for closest supported color (non-GUI TTY has only 8 colors!) │
└────────────┴────────────────────────────────────────────────────────────────────┘
На приведенной выше диаграмме показан снимок экрана с содержимым, опубликованным в "ESC-коде ANSI, 8-битных цветах" в Википедии , автором которого является CMG Lee et al. 24 февраля 2016 года и позднее , и лицензированы авторами как по лицензии CC BY-SA 3.0, так и по лицензии GFDL .
Цвета из приведенной выше 256-цветовой таблицы можно использовать следующим образом:
38;5;ɴ
- замените ɴ значением определенного цвета на приведенной выше диаграмме, чтобы изменить цвет переднего плана на ближайший цвет, поддерживаемый терминалом48;5;ɴ
- замените ɴ значением определенного цвета в приведенной выше таблице, чтобы изменить цвет фона на ближайший цвет, поддерживаемый терминаломНапример, 38;5;214;48;5;30
цвет переднего плана и цвет 214
фона будут заданы 30
оранжевым цветом на терминалах, которые его поддерживают.
Обратите внимание, что не все терминалы поддерживают все 256 цветов, поэтому важно понимать, что выбранный цвет может не использоваться. Будет использоваться только поддерживаемый цвет, ближайший к выбранному.
Например, TTY без GUI поддерживает только основные 16 цветов для переднего плана и 8 основных цветов для фона, поэтому ближайшие цвета, которые в итоге будут использоваться, могут не соответствовать вашим ожиданиям. Например, выделение оранжевого на бирке выше ( 38;5;214;48;5;30
) отображается как желтое на черном в TTY без GUI, так как это самые близкие поддерживаемые цвета.
10
это шрифт по умолчанию. 11
через 20
потенциальные альтернативные шрифты ( 20
обычно означает 𝕱𝖗𝖆𝖐𝖙𝖚𝖗 шрифт в тех редких терминалах, которые его поддерживают). Только 10
и, 12
кажется, существует по умолчанию в TTY без GUI, и ни один не существует в терминале GNOME или xterm
.
grep
неправильно переключает шрифты обратно перед выходом, поэтому запускайте, reset
если вы застряли в нежелательном шрифте после grep
возврата в оболочку.
┏━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┓
┃ ### ┃ GNOME Terminal ┃ xterm ┃ non-GUI TTY ┃
┡━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━┩
│ 10 │ «no effect» │ «no effect» │ «reset font» │
│ 11 │ «no effect» │ «no effect» │ -messed up font │
│ 12 │ «no effect» │ «no effect» │ +messed up font │
└─────┴─────────────────────────┴─────────────────────────┴───────────────────────┘
Источники раздела «Числовые параметры»:
● «Экранирующий код ANSI, параметры SGR (Select Graphic Rendition)» в Википедии.
● Экспериментальная проверка на терминале GNOMExterm
и TTY в не-GUI-режиме в Ubuntu 16.04.
Значением по умолчанию GREP_COLORS
является'ms=01;31:mc=01;31:sl=:cx=:fn=35:ln=32:bn=32:se=36'
Смысл каждого принятого элемента GREP_COLORS
можно проверить на странице руководства GNU.org .
Для завершения, и, как указал @damadam, вам нужно добавить в export
свой файл .bashrc
, чтобы сохранить изменения.
Связанный:
38;5;ɴ
, где ɴ следует заменить одним из значений цвета. Для фона используйте 48;5;ɴ
таким же образом. Например, 38;5;214;48;5;30
должен дать вам оранжевый на чирок. Если это не так, ваш терминал может не поддерживать 256 цветов. Например, TTY без GUI поддерживает только 16 цветов для переднего плана и 8 для фона и выберет цвета переднего плана и фона из тех 16 и 8, которые ближе всего к оранжевому на бирюзовом, который желтый на черном.
Помимо ответа от @M. Бесерра, не забудь добавить это export
внутрь ~/.bashrc
. Вы можете сделать это так:
nano ~/.bashrc
и введите теперь ваш export
:
export GREP_COLORS='ms=01;33:mc=01;31:sl=:cx=:fn=35:ln=32:bn=32:se=36'
Это устанавливает grep
желтые результаты, и мне не нужно повторять export
терминал после перезагрузки или компьютер.
<<<hello GREP_COLORS='ms=5;104' grep '.*'
один раз! Список кодов можно найти, например, здесь (раздел 6).