Símbolos e caracteres impressionantes em um prompt bash

70

Acabei de encontrar uma captura de tela do terminal de alguém:

Existe uma lista de todos os caracteres que podem ser usados em um prompt do Bash, ou alguém pode me pegar o caractere para a estrela e a seta para a direita?

    
por Naftuli Kay 02.12.2011 / 00:29

3 respostas

93

Você pode usar qualquer caractere imprimível, bash não se importa. Você provavelmente vai querer configurar seu terminal para suportar Unicode (na forma de UTF-8 ).

Existem muitos caracteres em Unicode, portanto, aqui estão algumas dicas para ajudá-lo a pesquisar nos gráficos Unicode:

  • Você pode tentar desenhar o personagem em Shapecatcher . Ele tenta reconhecer um caractere Unicode no que você desenha.
  • Você pode tentar descobrir em qual bloco o personagem está. Por exemplo, aquele símbolo de aparência estranha e aquela estrela estariam em um bloco de símbolos diversos; caracteres como Ǫ e ı são letras latinas com modificadores; é um símbolo matemático e assim por diante.
  • Você pode tentar pensar em uma palavra na descrição do caractere e procurá-la em uma lista de nomes e descrições de símbolos unicode. Gucharmap ou Kcharselect pode ajudar.

P.S. No Shapecatcher, eu obtive U + 2234 PORTANTO por , U+2192 SETA PARA A DIREITA para , U + 263F MERCURY para e U + 2605 BLACK STAR para .

Em um script bash, até o bash 4.1, você pode escrever um byte pelo seu ponto de código, mas não por um caractere. Se você quiser evitar caracteres não-ASCII para tornar seu .bashrc resiliente em alterações de codificação de arquivo, será necessário inserir os bytes correspondentes a esses caracteres na codificação UTF-8. Você pode ver os valores hexadecimais executando echo ∴ → ☿ ★ | hexdump -C em um terminal UTF-8, por exemplo é codificado por \xe2\x88\xb4 em UTF-8.

if [[ $LC_CTYPE =~ '\.[Uu][Tt][Ff]-?8' ]]; then
  PS1=$'\[\e[31m\]\xe2\x88\xb4\[\e[0m\]\n\xe2\x86\x92 \xe2\x98\xbf \~ \[\e[31m\]\xe2\x98\x85 $? \[\e[0m\]'
fi

Desde o bash 4.2, você pode usar \u seguido de 4 dígitos hexadecimais em uma string $'…' .

  PS1=$'\[\e[31m\]\u2234\[\e[0m\]\n\u2192 \u263f \~ \[\e[31m\]\u2605 $? \[\e[0m\]'
    
por 02.12.2011 / 01:28
11

Você pode encontrar os símbolos unicode em muitos sites, como este: link

Você só precisa garantir que seu termo suporte UTF-8 .

    
por 02.12.2011 / 00:34
2

Eu gosto de usar essas ferramentas - elas têm uma ótima experiência e é fácil pesquisar:

por 19.01.2017 / 18:05