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

9

Je veux changer la couleur d'une lettre spécifique dans mon nom d'utilisateur affiché par PS1 dans bash.

Par exemple: si \uc'est le cas rahul, j'aimerais que la lettre hsoit de couleur bleue et que le reste soit blanc.

Je ne sais que \use réfère à nom d' utilisateur et l' ajout d' une couleur à toute une « entité » est fait par l' ajout de balises comme: [\033[38;5;15m\].

Si c'est possible, puis-je savoir comment faire de même.

Rahul Bharadwaj
la source

Réponses:

13

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

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

Cela définira l'invite uniquement sur le nom d'utilisateur et un espace. Le premier caractère du nom d'utilisateur sera rouge. Cela fonctionne en développant la $USERvariable 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} "
Sebastian Stark
la source
1
Vous pouvez simplement omettre la longueur pour imprimer la chaîne entière en commençant par offset : ${USER:1}pour le nom d'utilisateur entier sauf le premier caractère. Bonne solution! Pouvez-vous également montrer comment changer la couleur du troisième personnage, comme l'OP l'a demandé?
dessert
1
On peut tester des choses comme ça avec echo -e, par exempleecho -e "${USER:0:2}\e[0;34m${USER:2:1}\e[m${USER:3} "
dessert
2
Est-ce que cela doit fonctionner avec différents noms d'utilisateur différents (par exemple, mettre en évidence la 3e lettre pour tout le monde)? Si c'est juste pour vous, une approche plus simple consiste simplement à coder en dur les lettres de votre nom d'utilisateur, par exemple raau lieu de ${USER:0:2}, etc.
egmont
Le codage en dur @egmont n'est presque jamais le meilleur moyen, mais il est vrai qu'il est souvent beaucoup plus simple. De cette façon, vous pouvez déposer le code dans un fichier de configuration global ou le partager avec d'autres. Et il gère le cas lorsque votre compte est renommé.
Sebastian Stark
1
Personnellement, je partage ma propre configuration de shell entre trois comptes nommés différemment. Mais peut-être que nous ne devrions pas entrer dans la philosophie ici :)
Sebastian Stark