Comment faire des caractères spéciaux dans un script Bash pour conky?
Je me demande comment puis-je faire une Celsius personnage dans un de mes script bash, j'ai donc pu corriger le fichier de sortie dans "CPU temp: 50 C" ligne?
Quelles sont les séquences d'échappement pour ce genre de caractères spéciaux, donner à ma police les prend en charge?
Encore à me gratter la tête...
Pour être plus précis j'en ai besoin pour une utilisation dans conky
J'utilise cette ligne: awk '{printf($3" C")}'. Comment dois-je le corriger afin qu'il génère des degrés Celsius?
Parce que si j'insère ℃ caractère directement, conky vis d'elle.
Vous devez vous connecter pour publier un commentaire.
Tous les non-contrôle des séquences d'octets votre script sorties sur le terminal sont interprétés pour s'afficher en fonction des paramètres de terminal server. Si vous le configurez pour interpréter les données entrantes comme utf-8 puis tout ce que vous devez faire dans votre script bash est sortie le Celsius caractères requis par utf-8.
Configuration de votre terminal droit dépend de l'application que vous utilisez. Il est très probable qu'elle est déjà en mode utf-8.
Afin d'afficher le caractère que vous voulez vous avez besoin de regarder ses Unicode codepoint et de l'encoder en utf-8 ou vous pouvez le retrouver quelque part où le caractère de l'utf-8 séquence est déjà montré. Celsius personnage est décrit ici par exemple.
Celsius utf-8 séquence est 0xE2 0x84 0x83, de sorte que vous pouvez afficher dans votre shell à l'aide de la
$'string'
construire car il accepte la\xhh
échapper:ou echo -e:
Aussi, vous pouvez l'affecter à une variable
Si vous souhaitez afficher ℃ comme deux caractères distincts: le degré de caractère et de la lettre C, alors vous pouvez utiliser ce personnage et cette commande:
Si vous utilisez un shell qui ne prend pas en charge la
$'string'
construire, vous pouvez également utiliser des utilitaires comme perl ou python:Dans GNU
awk
vous pouvez utiliser la norme du langage C échappe, y compris\xhh
, par exemple:Noter qu'une barre oblique inverse supplémentaire a été nécessaire pour terminer le nombre hexadécimal (sans la séquence d'échappement consomme tous les chiffres hexadécimaux, y compris la lettre C, voir GNU awk guide de l'utilisateur).
Plus de solution portable dans
awk
est d'utiliser octal séquence. Depuis hexadécimal 0xC2 est octal 302 et hexadécimal 0xB0 est octal 260, vous pouvez effectuer les opérations suivantes:De même,
$'string'
de construire, quel est son nom exact, ou où est-il documenté?man bash
et ensuite, la recherche de$'
Il n'y a pas une séquence d'échappement pour l' ° pour autant que je suis au courant.
Vous pouvez essayer ceci:
Connexes: Comment avez-vous écho à 4 chiffres de caractères Unicode en Bash?