Nota :
Contributeurs, les sont là pour vous aider, supprimez-les une fois le problème corrigé ou le champ rempli !
Le caractère d’échappement, produit par la touche ESC,
Permet de s’échapper d'un flux texte…
Pour s'adresser au terminal2) (une console virtuelle3) ou un terminal fenêtre4)), utilisé par une interface de communication en mode texte5).
Le caractère d’échappement introduit (permet de constituer) les séquences d'échappement,
Qui insérées dans un flux texte, permettent d'envoyer des codes de formatage texte, à la sortie du terminal (par exemple l'écran).
Le caractère d'échappement ESC est un caractère de contrôle6) non imprimable,
Il est le 27em caractère du code ASCII7) (033 en octal, (0)xb1 en hexadécimal).
Non-imprimable, il ne dispose pas d'un caractère textuel (graphique), pour le dessiner (l'écrire),
Empêchant ainsi, de le manipuler comme un caractère imprimable (par exemple a
) dans une chaîne de caractère.
Ce tuto propose d'écrire le caractère d'échappement,
D'expliquer sa représentation textuelle.
De l'écrire,
bash
ou dans un éditeur de texte (vim
, emmacs
ou nano
).bash
).
Pour écrire le caractère d'échappement depuis le clavier,
Dans la ligne de commande ou dans un éditeur de texte,
Nous devons utiliser les combinaisons de touches suivantes :
Ctrl+V puis ESC
^[
^[
, composé de deux caractères : ^
et [
.^[
, ne formera pas le caractère d'échappement.
Lors de l'interprétation de l'interpréteur de commande bash
,
Les caractères de contrôle protégés par contre oblique :
\e
ou \E
,\033
(en octal),\x1b
(en hexadécimal),Et
\c[
Sont remplacés par le caractère d’échappement.
$
et les commandes echo -e
et printf
,
L'interprétation de bash
réalise le remplacement des caractères de contrôle protégés par contre oblique,
Avec le mécanisme de protection $'<chaîne>
'.
Voir : man bash
section PROTECTIONS.
echo $'\e' >/tmp/df
ou
echo $'\c[' >/tmp/df
-v
de la commande cat
8) permet d'afficher les caractères non-imprimables.^
, soit par M-
.-t
permet de représenter aussi les tabulations horizontales.-v
ou -t
, les caractères de contrôles sont affichés par leurs représentations textuels.cat -v /tmp/df
^[
Le caractère $
introduit aussi le développement des paramètres (et variables).
L'opérateur de transformation de paramètre E
permet lors du développement des paramètres, le remplacement des caractères de contrôle protégés par contre oblique.
Voir : man bash
section DÉVELOPPEMENTS > Développement des paramètres > Transformation de paramètre.
Ainsi pour la variable var
, avec :
var=\\e
ou var='\e'
ou var="\e"
ou var=$'\e'
ou var=$'\c['
var=\\e echo ${var@E} >/tmp/df cat -v /tmp/df
^[
unset var # Destruction de la variable var
L'option -e
de la commande echo
, permet le remplacement des caractères de contrôle protégés par contre oblique.
echo -e "\e" >/tmp/df cat -v /tmp/df
^[
La commande printf
, réalise le remplacement des caractères protégés par contre oblique
%b
(placé dans l'argument format).printf "\e" >/tmp/df
Ou
printf %b "\e" >/tmp/df
cat -v /tmp/df
^[
echo -e
et printf
:“
).\
(contre oblique). Par exemple : \\e
.
Écrire le caractère d'échappement, ne suffit pas pour créer une séquence d'échappement.
Le caractère d'échappement doit être suivit du caractère [
(crochet ouvrant) et du code de la séquence.
Pour une console virtuelle ou un terminal fenêtre, la séquence d'échappement notée ^[[1m
met en gras.
Et ^[[0m
retourne au format normal.
Donc sous bash
:
;\↵ Entrée
Bash
ne voyant toujours qu'une seule ligne.\
, annule le saut de ligne.echo $'\e[1m'Debian Facile $'\e[0m' ;\ echo -e "\e[1mMouuai facile\e[0m"
Debian Facile
Mouuai facile
printf "\e[1mDebian Facile\e[0m\n" >/tmp/df printf %b "\e[1mMouuai facile\e[0m\n" >>/tmp/df printf \\e[1m%s\\e[0m\\n Debian Facile >> /tmp/df
cat /tmp/df
Debian Facile
Mouuai facile
Debian
Facile
cat -v /tmp/df
^[[1mDebian Facile^[[0m ^[[1mMouuai facile^[[0m ^[[1mDebian^[[0m ^[[1mFacile^[[0m
Si le fichier /tmp/df
n'est pas copié ailleurs, il sera supprimé durant l'arrêt du système.
rm -v /tmp/df
'/tmp/df' supprimé
Avant de partir, un dernier pour la route :
echo "^[[1;37;44mD^[[7mebian^[[27m F^[[7macile^[[0m"
Petit rappel :
Pour que cela fonctionne, il faut changer toutes les séquences des caractères ^[
par :
\e
et de son interprétation, ne sont plus utiles.-e
de la commande echo
ou du format %b
de la commande printf
.bash
,bash
, il s'agit d'un simple caractère (de contrôle, non-imprimable).\
, ni par l'encadrement des guillemets simples ou doubles.\e
, en utilisant printf
ou l'option -e
avec la commande echo
.echo -e "\e[1;37;44mD\e[7mebian\e[27m F\e[7macile\e[0m"
Cette écriture peut être partagée, en étant simplement recopiée ou en étant copiée/collée.
Mais elle nécessite d'être interprétée par l'interpréteur de commande.
Voir :