Exibir rostos emoji para comandos corretos e errados nos terminais

0

Quero personalizar meu terminal para exibir rostos emoji, mostrando rosto triste por comando errado e rosto feliz por comando correto que eu inserir. Existe alguma maneira de fazer isso usando meu terminal bash.

Aqui está o meu PS1 de .bash_profile

export PS1="[\[\e[1;32m\]\@\[\e[m\]] [\[\e[1;34m\]\u\[\e[m\]➡ \[\e[1;31m\]\W\[\e[m\]]\$ "
imPK
fonte
você pode definir "comando errado" e "comando certo" - o que exatamente o terminal deve estar tentando fazer por você? Um comando correto é algum comando que processa e sai normalmente? Isso deve acontecer enquanto você digita em tempo real? O que você está procurando?
samh 18/04

Respostas:

3

Com base no post de Maghin.

# Use echo -n to leave out the line end.
# Use -C option with hexdump to avoid big endian/little 
# endian confusion.
mac $  echo -n 😀 | hexdump -C
00000000  f0 9f 98 80                                       |....|
00000004
mac $  echo -n 😱  | hexdump -C
00000000  f0 9f 98 b1                                       |....|
00000004

"Inclua códigos de saída diferentes de 0 no prompt do bash subsequente" http://stackoverflow.com/questions/5946873/include-non-0-exit-codes-in-the-subsequent-bash-prompt

Aqui está o que eu acabei com:

export PS1='\u $(highlightExitCode) \$ '


highlightExitCode()
    {
        exit_code=$?
        if [ $exit_code -ne 0 ]
        then
           echo -en '\xf0\x9f\x98\xb1 '
        else
           echo -en '\xf0\x9f\x98\x80 '
        fi

    }

insira a descrição da imagem aqui

Uma alternativa mais direta para a função highlightsExitCode:

 highlightExitCode ()  { 
   if [ $? -ne 0 ]; then
     echo -n '😱 ';
   else
     echo -n '😀 ';
   fi 
 }

O único problema é que a imagem ruim aparece até você executar um comando bem-sucedido.

insira a descrição da imagem aqui

carimbo de história
fonte
3

Você pode usar a forma hexadecimal do ícone.

Aqui está o meu método:

Copie um emoji de uma fonte gráfica: https://getemoji.com/ Em seguida, cole-o no seu terminal com o seguinte comando:

$ echo 😀 | hexdump
0000000 9ff0 8098 000a                         
0000005

Em seguida, pegue todos os octais e coloque \ x antes de cada:

$ echo -e '\xf0\x9f\x98\x80\x0a\x00'
😀
Maghin
fonte
Este é um começo útil, mas não exibirá o emoji adequado com base em um comando bom ou ruim.
samh 18/04
Você precisa conhecer o aperto de mão secreto. Você precisa trocar o byte exibido no hexdump. Você precisa ignorar o byte ímpar e não há necessidade de final de linha
historystamp
A string correta é: echo '\ xf0 \ x9f \ x98 \ x80'
historystamp
Adicione que não há necessidade desse material hexadecimal.
historystamp