Comment pouvez-vous personnaliser votre invite de bash de terminal avec des visages souriants?

11

J'essaie de comprendre comment je peux personnaliser l'invite bash de mon terminal pour utiliser des visages souriants. Ce que je veux (comme le montre l'exemple), c'est que le cwd soit séparé de l'invite par un \ n et affiche un visage souriant vert si la commande a réussi, et un visage triste rouge si elle a échoué.

Des idées?

Cela a été inspiré par un screencast Peepcode.

Exemple

Josh Smith
la source

Réponses:

15

Après avoir passé environ une demi-heure à jouer avec le code d'andhrimnir et à faire d'autres recherches, j'ai finalement obtenu ce que je voulais.

PS1="\w \`if [ \$? = 0 ]; then echo -e '\[\e[01;32m\]\n\xE2\x98\xBA'; else echo -e '\[\e[01;31m\]\n\xE2\x98\xB9'; fi\` \[\e[01;34m\]\[\e[00m\]"

Vous pouvez trouver une liste d'émoticônes ici , puis les convertir en code octet à 3 chiffres que vous voyez après le caractère de nouvelle ligne.

Pour l'obtenir cwd, je n'avais qu'à utiliser \w. Vous pouvez également afficher l'utilisateur actuel en faisant \u@\w, ce qui produirait quelque chose comme joshsmith@~.

Josh Smith
la source
6

Il semble que le visage souriant montré ci-dessus soit un caractère unicode 0x263a. Vous aurez donc besoin d'un terminal compatible Unicode (je ne sais pas si terminal.app prend en charge cela, j'imagine que c'est le cas).

Voici un exemple de code qui imprime un visage souriant vert pour les codes de retour de 0 et des visages rouges froncés autrement.

PS1="\[\e[01;32m\]\u@\h \[\e[01;34m\]\W \`if [ \$? = 0 ]; then echo -e '\[\e[01;32m\]:)'; else echo -e '\[\e[01;31m\]:('; fi\` \[\e[01;34m\]$\[\e[00m\]"

Le mérite revient à Fingel sur les forums Arch (il l'a posté ici ).

jake-low
la source
Super travail sur l'échantillon if / then. Je suis curieux de savoir comment faire la nouvelle ligne, supprimer le $, utiliser réellement le symbole Unicode, et le faire afficher le plein cwd.
Josh Smith
... et une heure plus tard, a répondu à ma propre question (merci à vous!).
Josh Smith
1
Heureux d'avoir pu aider! Il y a beaucoup d'informations dans le fil du lien que j'ai posté ci-dessus si vous voulez approfondir les $PS1choses personnalisées .
jake-low
Oui, la moitié de mes recherches ont commencé sur ce fil. Super utile. De plus, pour tous ceux qui veulent aller plus en profondeur sur la ligne de commande, Peepcode a un excellent screencast avancé.
Josh Smith