Je ne suis pas une application console avancée ** Il m'est arrivé de connaître CSI pendant que je faisais diverses choses, alors je l'ai écrit.
Un type de ** séquence d'échappement **.
La première chose qui vous vient à l'esprit lorsque vous entendez le mot «échapper» est «\ n».
\ n
est un échappement très simple qui signifie un saut de ligne dans le système Unix, mais cette fois nous utiliserons une expression spéciale un peu plus compliquée.
À propos, CSI est un acronyme pour * Control Sequence Introducer *.
Typiques --Déplacez le curseur --Effacer l'écran (Effacer tout avant le curseur et tout supprimer après le curseur)
** here ** a tous les types et méthodes de contrôle.
~~ ** Bash ne semble pas s'échapper facilement ** (Reference). ~~
[Ajout: informations de commentaire]
Il semble que vous puissiez vous échapper avec Bash. Si vous ajoutez l'option -e
, telle que ʻecho -e`, l'échappement sera appliqué.
En outre, le lien ci-dessus était une autre discussion. Nous corrigerons.
Maintenant, dans l'exemple précédent, nous avons montré \ n
pour couper une ligne.
Puisque CSI peut contrôler plusieurs choses, le code de contrôle n'en est pas un, mais il existe un préfixe pour reconnaître qu'il s'agit de CSI.
C'est ** \ e [
** ou ** \ 033 [
** ou ** \ 0x1b [
**.
[Une addition]
Je pensais que bash ne pouvait pas s'échapper, juste \ e [
ne le soutenait pas. C'est possible avec \ 033 [
.
Puisque e est un type de caractère, 033 est un nombre octal et 0x1b est un nombre hexadécimal, c'est essentiellement le même, mais e est plus facile.
CSI est une sorte de séquence d'échappement [^ 1] au sens strict. L'insertion de \ e
au début vous indique le début de la séquence d'échappement, et [
vous indique qu'il s'agit de CSI.
Le contrôle de CSI change en fonction de ce que vous écrivez après cela.
Caractère de contrôle (aucun espace requis) | mouvement |
---|---|
n A | n lignes(1 ligne si non spécifié)Relevez le curseur |
n B | n lignes(1 ligne si non spécifié)Abaissez le curseur |
n C | n caractères(1 caractère sauf indication contraire)Avancez le curseur |
n D | n caractères(1 caractère sauf indication contraire)Déplacer le curseur en arrière |
n E | Déplacez le curseur sur n lignes(1 ligne si non spécifié)Alignez-vous sur le début ci-dessous |
n F | Déplacez le curseur sur n lignes(1 ligne si non spécifié)Ajuster au début du haut |
n G | Placez le curseur sur le nième caractère de la ligne courante(1er caractère si non spécifié)Correspondre |
n; m H | Placez le curseur sur la nième ligne, caractère m(1 caractère par ligne sauf indication contraire:en haut à gauche)Correspondre |
n J | Effacer l'écran (les détails seront décrits plus tard) |
n K | Supprimer la ligne (les détails seront décrits plus tard) |
n S | n lignes (1 ligne si non spécifié) Faites défiler l'écran pour continuer |
n T | n lignes (1 ligne si non spécifié) Faire défiler l'écran en arrière |
n L | Insérer n lignes (1 ligne si non spécifié) avant la ligne où se trouve le curseur |
n M | Supprimer n lignes (1 ligne si non spécifié) de la ligne où se trouve le curseur |
n P | Supprimer n caractères (1 caractère si non spécifié) de la position du curseur |
n P | Remplacez n caractères (1 caractère si non spécifié) par des espaces à partir de la position du curseur |
n ` | Déplacer le curseur sur le nième caractère de la ligne courante (1er caractère si non spécifié) |
n a | Avance le curseur de n caractères (1 caractère si non spécifié) |
n d | Élever le curseur de n lignes à la position actuelle (1 ligne si non spécifié) |
n m | SGR(Select Graphic Rendition)Spécifiez les paramètres (les détails seront décrits plus tard) |
s | Se souvenir de la position actuelle du curseur |
u | Appeler la position mémorisée du curseur |
> 3; a; b; c; d J | (b, a)De(d, c)Effacer le rectangle jusqu'à |
> 3; a; b; K | Effacer les caractères a à b sur la ligne courante |
n | comportement |
---|---|
Non spécifié | Effacer derrière le curseur jusqu'au début de l'écran (ligne) |
0 | Effacer derrière le curseur jusqu'au début de l'écran (ligne) |
1 | Effacer avant le curseur jusqu'à la fin de l'écran (ligne) |
2 | Effacer tout l'écran (ligne) |
n | sens |
---|---|
Aucun | Réinitialisation des paramètres |
0 | Réinitialisation des paramètres |
1 | Audacieux |
2 | Impression légère (pas largement prise en charge) |
3 | Oblique (pas largement pris en charge, inversé)(n=7)Peut également être) |
4 | Souligner |
5 | Clignotant: 150 fois/Dans quelques minutes |
6 | Clignotement rapide: 150 fois/Plus d'une minute (pas largement pris en charge) |
7 | Affichage inversé: les couleurs de premier plan et d'arrière-plan sont permutées |
8 | Masquer les caractères (pas largement pris en charge) |
9 | Ligne d'annulation (pas largement prise en charge) |
10 | Police par défaut |
11–19 | (n-10)Utilisez la deuxième police alternative |
20 | Police de fracture(Principalementnonprisencharge) |
21 | Gras désactivé (pas largement pris en charge),Soulignement double (presque non pris en charge) |
22 | Restaurer la couleur et l'accentuation (gras / clair) |
23 | Restaurer l'inclinaison et la fracture |
24 | Annuler le soulignement |
25 | Annuler le clignotement |
28 | Afficher le texte |
29 | Effacer le barré |
30–37 | Couleur de premier plan (essentiellement la couleur du texte)(n-30)Changer en numéro (le numéro de couleur sera décrit plus tard) |
38 | Expansion des paramètres de couleur de premier plan.\e[38;5;n Vous pouvez spécifier l'index de couleur avec(0...255)。\e[38;2;r;g;b RVB peut être réglé avec(0 chacun...255)。 |
39 | Réinitialiser la couleur de premier plan |
40–47 | Couleur de l'arrière plan(n-40)Changer en numéro (le numéro de couleur sera décrit plus tard) |
48 | Expansion de la mise en scène de l'arrière-plan.\e[48;5;n Vous pouvez spécifier l'index de couleur avec(0...255)。\e[48;2;r;g;b RVB peut être réglé avec(0 chacun...255)。 |
49 | Réinitialiser la couleur d'arrière-plan |
Quelle est cette tempête non prise en charge ...
nombre | Couleur |
---|---|
0 | noir |
1 | rouge |
2 | vert |
3 | Jaune |
4 | Bleu |
5 | Magenta |
6 | cyan |
7 | blanc |
Cela ressemble à ceci lorsque vous affichez approximativement chaque couleur.
Lors du réglage du SGR
echo "\e[31mred\e[m"
Si vous le faites, il sera affiché en rouge en rouge.
Aussi,
echo "\e[31;43mred&yellow\e[m"
Si vous le faites, il affichera «rouge et jaune» avec un fond jaune de caractère rouge.
Vous pouvez définir plusieurs options à la fois en tapant les options séparées par ;
de cette manière.
** Assurez-vous de désactiver l'option à la fin avec \ e [m
ou \ e [0m
" pour éviter un comportement inattendu après la sortie de CSI. ** **
[^ 1]: Strictement parlant, \ n
n'est pas une séquence d'échappement. Dans un sens étroit, il fait référence à une chaîne d'octets de contrôle commençant par ʻESC (0x1B) `.
Recommended Posts