Como você pode personalizar o prompt bash do seu terminal com smileys?

11

Estou tentando descobrir como posso personalizar o prompt bash do meu terminal para usar rostos sorridentes. O que eu quero (como visto no golpe de exemplo) é que o cwd seja separado do prompt por um \ n e mostre um smiley verde se o comando for bem sucedido, e um rosto triste vermelho se ele falhar.

Alguma idéia?

Isto foi inspirado por um screencast Peepcode.

    
por Josh Smith 16.12.2011 / 03:07

2 respostas

14

Depois de gastar cerca de meia hora brincando com o código de andhrimnir e fazendo mais pesquisas, finalmente consegui o que queria.

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

Você pode encontrar uma lista de emoticons aqui e, em seguida, conversione-os para o código de 3 dígitos que você vê após o caractere de nova linha.

Para obter o cwd , tudo o que precisei fazer foi usar \w . Você também pode mostrar o usuário atual fazendo \u@\w , o que produziria algo como joshsmith@~ .

    
por 16.12.2011 / 04:13
6

Parece que o rosto sorridente mostrado acima é um caractere unicode 0x263a . Então você vai precisar de um terminal com capacidade para unicode (Não tenho certeza se o terminal.app suporta isso, imagino que sim).

Veja o código de exemplo que imprime uma face sorridente verde para os códigos de retorno 0 e as caretas vermelhas de outra forma.

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

O crédito vai para os fóruns do Fingel on the Arch (ele o postou aqui ).

    
por 16.12.2011 / 03:21