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


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

Par exemple: si mon \u est rahul, Je voudrais la lettre h être de couleur bleue et reposer pour être blanc.

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

Si c'est possible, puis-je s'il vous plaît savoir comment faire la même chose.


9
2018-03-14 12:51


origine




Réponses:


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

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

Cela définira l'invite juste pour le nom d'utilisateur et un espace. Le premier caractère du nom d'utilisateur sera rouge. Cela fonctionne en élargissant le $USER variable deux fois avec une plage spécifique. La première fois, la plage se situe entre 0 et 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
2018-03-14 13:02



Vous pouvez simplement omettre longueur pour imprimer toute la chaîne en commençant par décalage: ${USER:1} pour le nom d'utilisateur complet sauf le premier caractère. Belle solution! Pouvez-vous également montrer comment changer la couleur du troisième personnage, comme l'OP demandé? - dessert
On peut tester des choses comme ça avec echo -e, par exemple. echo -e "${USER:0:2}\e[0;34m${USER:2:1}\e[m${USER:3} " - dessert
Est-ce que cela doit fonctionner avec différents noms d'utilisateur (par exemple, mettre en évidence la 3ème 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 ex. ra au lieu de ${USER:0:2}, etc. - egmont
Le codage @egmont n'est presque jamais le meilleur moyen, mais il est certes 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
Personnellement, je partage ma propre configuration de shell entre trois comptes nommés différemment. Mais peut-être ne devrions-nous pas entrer dans la philosophie ici :) - Sebastian Stark