¿Cómo puedes personalizar tu mensaje de bash terminal con caras sonrientes?

11

Estoy tratando de averiguar cómo puedo personalizar el mensaje de bash de mi terminal para usar caras sonrientes. Lo que quiero (como se ve en el ejemplo de golpe) es que el cwd esté separado de la línea de comandos por \ n y muestre una cara sonriente verde si el comando tuvo éxito, y una cara roja triste si falló.

¿Algunas ideas?

Esto fue inspirado por un screencast de Peepcode.

Example

Josh Smith
fuente

Respuestas:

14

Después de pasar media hora jugando con el código de andhrimnir e investigando más, finalmente obtuve lo que quería.

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\]"

Puedes encontrar un lista de emoticonos aqui y entonces convertirlos al código de byte de 3 dígitos que se ve después del carácter de nueva línea.

Para obtener el cwd, todo lo que tenía que hacer era usar \w. También puedes mostrar al usuario actual haciendo \u@\w, que daría como resultado algo como joshsmith@~.

Josh Smith
fuente
6

Parece que la cara sonriente que se muestra arriba es un personaje de Unicode 0x263a. Así que necesitarás un terminal con capacidad para Unicode (no estoy seguro de si terminal.app admita esto, me imagino que sí).

Aquí hay un código de muestra que imprime una cara sonriente verde para los códigos de retorno de 0 y caras rojas de lo contrario.

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\]"

El crédito va a los foros de Fingel on the Arch (lo publicó aquí ).

jake-low
fuente
Impresionante trabajo en la muestra if / then. Tengo curiosidad por cómo hacer la nueva línea, eliminar el $, utilice realmente el símbolo Unicode y haga que se muestre en su totalidad cwd.
Josh Smith
... y una hora después, respondí mi propia pregunta (¡gracias a ti!).
Josh Smith
1
Me alegro de poder ayudar! Hay una gran cantidad de información en el hilo del enlace que publiqué arriba si desea profundizar en la costumbre. $PS1 cosas.
jake-low
Sí, la mitad de mi investigación comenzó en ese hilo. Super servicial Además, para cualquier persona que quiera profundizar más en la línea de comandos, Peepcode tiene un gran screencast avanzado.
Josh Smith