web-dev-qa-db-fra.com

Changer la couleur d'une lettre spécifique du nom d'utilisateur dans la PS1 de bash

Je souhaite modifier la couleur d'une lettre spécifique de mon nom d'utilisateur affiché par PS1 sous BASH.

Exemple: si mon \u est rahul, je voudrais que la lettre h soit de couleur bleue et reste en blanc.

Je sais que \u fait référence à nom d'utilisateur et que l'ajout d'une couleur à une "entité" entière se fait en ajoutant des balises telles que: [\033[38;5;15m\].

Si possible, puis-je savoir comment faire de même?.

9
Rahul Bharadwaj

Si cela ne vous dérange pas de ne pas utiliser l'échappement \u, vous pouvez le faire comme ceci:

PS1="\[\e[0;31m\]${USER:0:1}\[\e[m\]${USER:1} "

Cela définira l'invite uniquement avec le nom d'utilisateur et un espace. Le premier caractère du nom d'utilisateur sera en rouge. Cela fonctionne en développant la variable $USER deux fois avec une plage spécifique. La première fois, la plage va de 0 à 1. La deuxième fois, elle va de 1 (le deuxième caractère) à la fin.

Pour obtenir l'invite comme vous l'avez demandé, utilisez ceci:

PS1="${USER:0:2}\[\e[0;34m\]${USER:2:1}\[\e[m\]${USER:3} "
13
Sebastian Stark