changer la couleur de l'invite en fonction de l'utilisateur ou de la racine dans zsh


13

dans zsh, vous pouvez avoir un %#dans votre PS1(ou n'importe quelle PROMPTvariable) ce qui signifie essentiellement afficher %si l'utilisateur ou afficher #si root. Je me demande s'il y a un moyen d'affecter cela afin que le %ou #change de couleur selon qu'il s'agit d'un utilisateur ou d'un root (un rouge pour root, un bleu pour user) la manière évidente est juste de changer le PS1dans ma racine ~/.zshrcmais en considérant c'est déjà un symbole spécial, je me demande s'il n'y a peut-être pas un moyen d'utiliser le même PS1pour les deux ... quelque chose de spécifique à %#aimer c'est pour zsh (je suis sûr qu'il y a d'autres hacks que je pourrais faire aussi) une instruction if then).

Réponses:


8

%(!.%{\e[1;31m%}%m%{\e[0m%}.%{\e[0;33m%}%m%{\e[0m%})

Cela devrait fonctionner pour changer le nom d'hôte ( %m) d'une couleur différente (rouge) si vous êtes root. Je n'ai pas de shell zsh pour le tester mais il semble correct.

Voici pourquoi:

%(x.true.false):: Sur la base de l'évaluation du premier terme du ternaire, exécutez l'instruction correcte. '!' est vrai si le shell est privilégié. En fait, %#c'est un raccourci pour %(!.#.%).

%{\e[1;31m%} %m %{\e[0m%}:: the %{\e[X;Ym%}est la séquence d'échappement des couleurs avec X comme formatage (gras, souligné, etc.) et Y comme code couleur. Notez que vous devez ouvrir et fermer la séquence autour du terme que vous cherchez à changer de couleur, sinon tout ce qui suit sera de n'importe quelle couleur. J'ai ajouté des espaces ici autour du terme rapide %mpour plus de clarté.

http://www.nparikh.org/unix/prompt.php a plus d'options et de détails autour des tables de couleurs et d'autres options disponibles pour zsh.


6
autoload colors
colors
PS1="%~ %{%(#~$fg[red]~$fg[blue])%}%#%{$fg[default]%} "

%(#teste si le shell s'exécute en tant que root. Changer cela pour %(!tester si le shell s'exécute avec des privilèges élevés (qui couvre des choses comme newgrp, mais pas la connexion en tant que root).

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.