Modification de la couleur de grep

23

Quand je grep quelque chose, le résultat est toujours en rouge. Je sais que la commande grep --colorimprime le résultat en couleur, qui par défaut est rouge. Puis-je changer la couleur?

Codito ergo sum
la source

Réponses:

18

Vous pouvez modifier la couleur de surbrillance grepen utilisant une variable d'environnement GREP_COLORS, que vous pouvez définir comme ceci:

export GREP_COLORS='ms=01;31'

Options numériques

Les nombres peuvent styliser le texte, changer la couleur de premier plan ou la couleur d'arrière-plan, ou changer les polices.

Les conditions de départ pour toutes les GREP_COLORSoptions sont le style de texte, la police et les couleurs par défaut du terminal. La réinitialisation de l'un de ces paramètres rétablira les paramètres par défaut du terminal, et non aucun des grepparamètres par défaut.

Légende

  • ;ʙ;- ;sépare les options numériques que vous souhaitez combiner (par exemple, gras texte jaune sur noir combine les options 1, 33et 40dans 1;33;40)
  • +ᴇꜰꜰᴇᴄᴛ- ᴇꜰꜰᴇᴄᴛ est activé lorsque vous utilisez cette option numérique
  • -ᴇꜰꜰᴇᴄᴛ- ᴇꜰꜰᴇᴄᴛ est désactivé lorsque vous utilisez cette option numérique
  • color, green, cyanEt grey- dans la section « style de texte », ceux - ci font référence à la couleur de premier plan
  • colors - dans la section "Style de texte", cela fait référence à la fois à la couleur de premier plan et à la couleur d'arrière-plan
  • this color- dans la section "Couleurs de premier plan", il s'agit de la couleur de premier plan; dans la section "Couleurs d'arrière-plan", il s'agit de la couleur d'arrière-plan

Style de texte

Une chaîne vide ou 0réinitialise tous les styles de texte et réinitialise les deux couleurs aux valeurs par défaut, mais ne réinitialise pas la police par défaut.

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

Couleurs de premier plan

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

Couleurs de fond

Notez que le TTY non-GUI ne fournit pas une série de couleurs d'arrière-plan plus lumineuse.

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

Nuancier 256 couleurs

Nuancier 256 couleurs

Le graphique ci-dessus est une capture d'écran du contenu publié dans "Code d'échappement ANSI, couleurs 8 bits" sur Wikipedia , rédigé par CMG Lee et al. le 24 février 2016 et après , et sous licence par les auteurs sous la licence de droit d'auteur CC BY-SA 3.0 et la licence de droit d'auteur GFDL .

Les couleurs du tableau de 256 couleurs ci-dessus peuvent être utilisées comme suit:

  • 38;5;ɴ- remplacez ɴ par la valeur d'une couleur particulière dans le tableau ci-dessus pour changer la couleur de premier plan à la couleur la plus proche prise en charge par le terminal
  • 48;5;ɴ- remplacez ɴ par la valeur d'une couleur particulière dans le tableau ci-dessus pour changer la couleur d'arrière - plan en la couleur la plus proche prise en charge par le terminal

Par exemple, 38;5;214;48;5;30définira le premier plan sur couleur 214et l'arrière-plan sur couleur 30, donnant un résultat orange sur bleu sur les terminaux qui le prennent en charge.

Notez que tous les terminaux ne prennent pas en charge les 256 couleurs, il est donc important de réaliser que la couleur choisie peut ne pas être utilisée. Seule la couleur prise en charge la plus proche de celle choisie sera utilisée.

Par exemple, le TTY non-GUI prend uniquement en charge les 16 couleurs de base pour le premier plan et les 8 couleurs de base pour l'arrière-plan, de sorte que les couleurs les plus proches qui finissent par être utilisées peuvent ne pas être celles que vous attendez. Par exemple, la sélection orange sur bleu ci-dessus ( 38;5;214;48;5;30) s'affiche en jaune sur noir dans le TTY non-GUI, car ce sont les couleurs prises en charge les plus proches.

Les polices

10est la police par défaut. 11à travers 20sont des polices alternatives potentielles ( 20signifie généralement une police 𝕱𝖗𝖆𝖐𝖙𝖚𝖗 dans les rares terminaux qui la prennent en charge). Seulement 10et 12semblent exister par défaut dans le TTY non-GUI, et aucun n'existe dans GNOME Terminal ou xterm.

grepne rétablit pas correctement les polices avant de quitter, donc exécutez resetsi vous êtes coincé dans une police indésirable après le grepretour au shell.

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

Sources de la section "Options numériques":
        "Code d'échappement ANSI, paramètres SGR (Select Graphic Rendition)" sur Wikipédia
        ● Vérification expérimentale sur le terminal GNOME xterm, et TTY en mode non-GUI sur Ubuntu 16.04


exemples de changements de couleur après avoir défini <code> GREP_COLORS </code>

La valeur par défaut de GREP_COLORSest'ms=01;31:mc=01;31:sl=:cx=:fn=35:ln=32:bn=32:se=36'

La signification de chaque élément accepté sur GREP_COLORSpeut être vérifiée sur la page de manuel de GNU.org .

Pour terminer, et comme l'a souligné @damadam, vous devez ajouter le exportà votre .bashrcafin d'enregistrer les modifications.

En relation:

Grep multicolore

Utilisez des couleurs différentes pour chaque autre grep

M. Becerra
la source
2
Il y a beaucoup plus de couleurs et d'options de formatage disponibles, essayez <<<hello GREP_COLORS='ms=5;104' grep '.*'une fois! Une liste de codes peut être trouvée par exemple ici (section 6).
dessert
1
Comment utilisez-vous les valeurs de couleur de la table de 256 couleurs avec GREP_COLORS?
Sebastian Stark
1
@SebastianStark Pour le premier plan, utilisez 38;5;ɴ, où ɴ doit être remplacé par l'une des valeurs de couleur. Pour le fond, utilisez 48;5;ɴde la même manière. Par exemple, 38;5;214;48;5;30devrait vous donner de l'orange sur la sarcelle d'hiver. Si ce n'est pas le cas, votre terminal peut ne pas prendre en charge 256 couleurs. Par exemple, le TTY non GUI ne prend en charge que 16 couleurs pour le premier plan et 8 pour l'arrière-plan et choisira les couleurs de premier plan et d'arrière-plan parmi les 16 et 8 les plus proches de l'orange sur la sarcelle d'hiver, qui est jaune sur noir.
Chai T. Rex
1
@ ChaiT.Rex thx, fonctionne très bien. Ce n'est pas très évident de la réponse cependant.
Sebastian Stark
2
@ ChaiT.Rex merci, mais pour moi le problème était plus que dans la section "256 couleurs" du texte il n'y a aucune mention de ces options, juste la table des couleurs
Sebastian Stark
6

En plus de la réponse de @M. Becerra, n'oubliez pas d'ajouter ceci à l' exportintérieur ~/.bashrc. Vous pouvez le faire comme ça:

nano ~/.bashrc

et saisissez maintenant votre export:

export GREP_COLORS='ms=01;33:mc=01;31:sl=:cx=:fn=35:ln=32:bn=32:se=36'

Cela définit les greprésultats sur jaune et je n'ai pas besoin de refaire le exportterminal après redémarrage ou l'ordinateur.

damadam
la source
5
modifiez la réponse d'origine pour l'améliorer la prochaine fois.
Thorbjørn Ravn Andersen
C'est plus joli MAIS cela ne semble fonctionner que sur Linux, pas sur Mac :(
Sridhar Sarnobat
@SridharSarnobat Mac est vraiment différent d'Ubuntu, Mac n'est pas Linux, et je fais cette étape pour Ubuntu (si c'était pour Mac, ce serait hors sujet ici, les questions Mac doivent être posées sur Ask Different
damadam
Ouais. Cela ne vaut pas la peine que je poste une autre question juste pour moi pour montrer ma tristesse :)
Sridhar Sarnobat