Модифікація кольору грепу


23

Коли я щось клапну, результат завжди червоного кольору. Я знаю, що команда grep --colorдрукує результат у кольорі, який за замовчуванням є червоним. Чи можна змінити колір?

Відповіді:


18

Ви можете змінити колір виділення grepза допомогою змінної середовища GREP_COLORS, яку ви можете встановити так:

export GREP_COLORS='ms=01;31'

Числові параметри

Цифри можуть стилювати текст, змінювати колір переднього плану або колір тла або змінювати шрифти.

Початковими умовами для всіх GREP_COLORSопцій є стиль тексту, шрифт та кольори за замовчуванням. Скидання будь-якого з них повернеться до значень за замовчуванням терміналу, а не grepдо стандартних.

Легенда

  • ;ʙ;- ;розділяє числові параметри , які ви хочете об'єднати (наприклад, жирний жовтий на чорному тлі текст поєднує в собі варіанти 1, 33і 40в 1;33;40)
  • +ᴇꜰꜰᴇᴄᴛ- ᴇꜰꜰᴇᴄᴛ вмикається при використанні цієї цифрової опції
  • -ᴇꜰꜰᴇᴄᴛ- ᴇꜰꜰᴇᴄᴛ вимикається при використанні цієї цифрової опції
  • 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!)    │
└────────────┴────────────────────────────────────────────────────────────────────┘

Кольори тла

Зауважте, що не-GUI TTY не забезпечує яскравішу серію кольорів фону.

┏━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┓
┃ ### ┃ 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!)     │
└────────────┴────────────────────────────────────────────────────────────────────┘

256-кольорова діаграма

256-кольорова діаграма

Наведена вище діаграма - це скріншот вмісту, опублікованого у "Енсі-коді пошуку, 8-бітні кольори" у Вікіпедії , автор CMG Lee та ін. 24 лютого 2016 р. і пізніше та отримано ліцензію авторів як під авторською ліцензією CC BY-SA 3.0, так і ліцензією на авторське право GFDL .

Кольори з 256-кольорової діаграми вище можна використовувати наступним чином:

  • 38;5;ɴ- замініть ɴ значенням певного кольору у діаграмі вище, щоб змінити колір переднього плану на найближчий колір, який підтримує термінал
  • 48;5;ɴ- замініть ɴ значенням певного кольору в діаграмі вище, щоб змінити колір фону на найближчий колір, який підтримує термінал

Наприклад, 38;5;214;48;5;30встановіть передній план кольором, 214а фон - кольором 30, даючи результат помаранчевого кольору на терміналах, які підтримують його.

Зауважте, що не всі термінали підтримують усі 256 кольорів, тому важливо усвідомити, що обраний колір може бути використаний. Буде використано лише підтримуваний колір, найближчий до обраного.

Наприклад, не-GUI TTY підтримує лише основні 16 кольорів для переднього плану та основні 8 кольорів для тла, тому найближчі кольори, які в кінцевому підсумку використовуються, можуть бути не те, що ви очікуєте. Як приклад, виділення помаранчевого на сльозоті вище ( 38;5;214;48;5;30) показано як жовто-чорне в не-GUI TTY, оскільки це найближчі підтримувані кольори.

Шрифти

10є шрифтом за замовчуванням. 11через - 20це потенційні альтернативні шрифти ( 20зазвичай означає шрифт 𝕱𝖗𝖆𝖐𝖙𝖚𝖗 у рідкісних терміналах, які підтримують його). Тільки 10і, 12здається, існують за замовчуванням у не-GUI TTY, і жоден не існує в терміналі 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 (Виберіть графічне відтворення)" у Вікіпедії
        ● Експериментальна перевірка на терміналі GNOME xtermта TTY в режимі не GUI в Ubuntu 16.04


приклади змін кольору після налаштування <code> GREP_COLORS </code>

Значення за замовчуванням 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, щоб зберегти зміни.

Пов'язані:

Різнокольоровий греп

Використовуйте різні кольори для кожного іншого грепу


2
Існує набагато більше кольорів та варіантів форматування, спробуйте <<<hello GREP_COLORS='ms=5;104' grep '.*'один раз! Перелік кодів можна знайти, наприклад, тут (розділ 6).
десерт

1
Як ви використовуєте значення кольорів із таблиці кольорів 256 за допомогою GREP_COLORS?
Себастьян Старк

1
@SebastianStark Для переднього плану використовуйте 38;5;ɴ, де ɴ слід замінити одним із значень кольору. Для фону використовуйте 48;5;ɴтак само. Наприклад, 38;5;214;48;5;30повинні дати вам апельсин на чирок. Якщо цього немає, ваш термінал може не підтримувати 256 кольорів. Наприклад, не-GUI TTY підтримує лише 16 кольорів для переднього плану та 8 для тла, а також вибере кольори переднього плану та фонові кольори з тих 16 та 8, які є найближчими до оранжевого на шкірці, який є жовтим на чорному.
Чай Т. Рекс

1
@ ChaiT.Rex thx, працює чудово. Хоча це не дуже очевидно з відповіді.
Себастьян Старк

2
@ ChaiT.Rex спасибі, хоч для мене проблема полягала в тому, що в розділі "256 кольорів" тексту немає жодних згадок про ці параметри, лише таблиця кольорів
Себастьян Старк

6

Окрім відповіді від @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термінал після перезавантаження або комп'ютер.


5
відредагуйте оригінальну відповідь, щоб наступного разу було краще.
Thorbjørn Ravn Andersen

Це приємніше, але це, здається, працює лише на Linux, а не на Mac :(
Шрідхар Сарнобат

@SridharSarnobat Mac справді відрізняється від Ubuntu, Mac не є Linux, і я роблю цей крок для Ubuntu (якби це був для Mac, це було б поза темою, питання Mac потрібно задавати на Ask Different
damadam

Так. Мені не варто розміщувати ще одне запитання лише для мене, щоб показати свій смуток :)
Шрідар Шарнобат
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.