Como você pode personalizar o prompt do bash do terminal com carinhas felizes?

11

Estou tentando descobrir como posso personalizar o prompt do bash do meu terminal para usar carinhas felizes. O que eu quero (como visto no exemplo de golpe) é que o cwd seja separado do prompt por a \ n e mostre uma carinha verde se o comando for bem-sucedido e uma carinha vermelha se falhar.

Alguma ideia?

Isso foi inspirado em um screencast do Peepcode.

Exemplo

Josh Smith
fonte

Respostas:

15

Depois de passar 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 depois convertê-los no código de 3 dígitos que você vê após o caractere de nova linha.

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

Josh Smith
fonte
6

Parece que o rosto sorridente mostrado acima é um caractere unicode 0x263a. Portanto, você precisará de um terminal compatível com unicode (não tenho certeza se o terminal.app suporta isso, imagino que sim).

Aqui está um código de exemplo que imprime um rosto sorridente verde para códigos de retorno 0 e rostos vermelhos, caso contrário.

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 Fingel nos fóruns do Arch (ele postou aqui ).

jake-low
fonte
Trabalho impressionante na amostra if / then. Estou curioso para fazer a nova linha, remover o $, realmente usar o símbolo Unicode e mostrá-lo na íntegra cwd.
Josh Smith
... e uma hora depois, respondi minha própria pergunta (obrigado!).
Josh Smith
1
Ainda bem que pude ajudar! Há muitas informações no tópico no link que eu postei acima, se você quiser se aprofundar nas $PS1coisas personalizadas .
Jake-low
Sim, metade da minha pesquisa começou nesse segmento. Super útil. Além disso, para quem deseja aprofundar a linha de comando, o Peepcode possui um ótimo screencast avançado.
21711 Josh Smith