web-dev-qa-db-fra.com

Symboles et caractères impressionnants dans une invite bash

Je viens de croiser une capture d'écran du terminal de quelqu'un:

Screenshot of a session showing a Prompt with an asterisk and arrow

Existe-t-il une liste de tous les personnages qui peuvent être utilisés dans une invite Bash, ou quelqu'un peut-il me donner le personnage pour l'étoile et la flèche droite?

85
Naftuli Kay

Vous pouvez utiliser n'importe quel caractère imprimable, cela ne dérange pas bash. Vous voudrez probablement configurer votre terminal pour prendre en charge nicode (sous la forme TF-8 ).

Il y a beaucoup de caractères dans Unicode, alors voici quelques conseils pour vous aider à parcourir les graphiques Unicode:

  • Vous pouvez essayer de dessiner le personnage sur Shapecatcher . Il essaie de reconnaître un caractère Unicode dans ce que vous dessinez.
  • Vous pouvez essayer de comprendre dans quel bloc se trouve le personnage. Par exemple, ce symbole bizarre et cette étoile seraient dans un bloc de symboles divers; des caractères comme Ǫ et ı sont des lettres latines avec des modificateurs; est un symbole mathématique, etc.
  • Vous pouvez essayer de penser à un mot dans la description du personnage et le rechercher dans une liste de noms et de descriptions de symboles Unicode. Gucharmap ou Kcharselect peut vous aider.

P.S. Sur Shapecatcher, j'ai eu + 2234 DONC pour , + 2192 FLÈCHE VERS LA DROITE pour , + 263F MERCURE pour et + 2605 BLACK STAR pour .

Dans un script bash, jusqu'à bash 4.1, vous pouvez écrire un octet par son point de code, mais pas un caractère. Si vous souhaitez éviter les caractères non ASCII pour rendre votre .bashrc résilient aux modifications d'encodage de fichier, vous devrez entrer les octets correspondant à ces caractères dans l'encodage UTF-8. Vous pouvez voir les valeurs hexidécimales en exécutant echo ∴ → ☿ ★ | hexdump -C dans un terminal UTF-8, par exemple est codé par \xe2\x88\xb4 en 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

Depuis bash 4.2, vous pouvez utiliser \u suivi de 4 chiffres hexadécimaux dans un $'…' chaîne.

  PS1=$'\\[\e[31m\\]\u2234\\[\e[0m\\]\n\u2192 \u263f \\~ \\[\e[31m\\]\u2605 $? \\[\e[0m\\]'

Vous pouvez trouver les symboles Unicode sur de nombreux sites, comme celui-ci: http://panmental.de/symbols/info.htm

Vous devez juste vous assurer que votre terme prend en charge UTF-8 .

12
jasonwryan

j'aime utiliser ces outils - ils ont une expérience agréable, et il est facile de rechercher à travers:

4
Eliran Malka