Les séquences d'échappements sous Unix Cédric Benharous Ce document décrit les séquences d'échappements sous Unix permettant d'obtenir du texte en couleur, ou souligné, avec un déplacement éventuel du curseur. _________________________________________________________ Table des matières 1. Introduction 2. Quelques codes 3. Combinaisons 4. Déplacement 5. Rafraîchissement 6. Inclusion dans du code C 7. Conclusion 1. Introduction Voici un court document présentant les séquences d'échappement sous UNIX, vous permettant ainsi d'avoir des caractères en couleur en mode texte, ou d'effectuer certaines opérations comme le déplacement du curseur par exemple. Si votre terminal préféré utilise les codes couleur ISO 6429 (c'est en général le cas) vous pouvez utiliser les codes vus dans les sections précédente de la façon suivante: Prenons un exemple sous le shell, si vous voulez mettre 'titi' en surbrillance alors vous devrez taper: # echo ^[[1mtiti^[[m Le ^[[1m permet d'effectuer le surbrillance, et ^[[m met fin a celle-ci et permet de restaurer l'état du terminal. * ATTENTION:^[ n'est pas composé de deux caractères mais représente un seul caractère. Pour l'obtenir, appuyez en même temps sur Ctrl (la touche Control) et [. * ATTENTION: Pour obtenir les caractères utilisant la touche Control, il faut souvent les précéder d'une autre combinaison de touches. Ainsi, o Sous Emacs: Tapez d'abord 'Ctrl q' o Sous vi: Tapez d'abord 'Ctrl v' o Sous bash: Tapez d'abord 'Ctrl v' _________________________________________________________ 2. Quelques codes Dans l'exemple précédent, le code '1' correspond a la surbrillance, voici les autres codes normalement disponibles: 0 pour remettre la couleur par defaut 1 pour la surbrillance 4 pour les textes soulignes 5 pour les textes clignotants 30 pour un avant-plan noir 31 pour un avant-plan rouge 32 pour un avant-plan vert 33 pour un avant-plan jaune (ou marron) 34 pour un avant-plan bleu 35 pour un avant-plan pourpre 36 pour un avant-plan cyan 37 pour un avant-plan blanc (ou gris) 40 pour un fond noir 41 pour un fond rouge 42 pour un fond vert 43 pour un fond jaune (ou marron) 44 pour un fond bleu 45 pour un fond pourpre 46 pour un fond cyan 47 pour un fond blanc (ou gris) Malheureusement, tous les codes ne sont pas garantis et dépendent de vos display devices. _________________________________________________________ 3. Combinaisons Bien sûr, vous pouvez faire des combinaisons de séquences, par exemple: # echo ^[[40m^[[31mtiti^[[m^[[m vous donne titi en rouge avec un fond noir. _________________________________________________________ 4. Déplacement Les manipulations que l'on peut ainsi efectuer ne se font pas seulement avec la couleur mais aussi avec la position, par exemple: # echo ^[[0\;0 vous amène le prompteur au coin gauche de l'écran (le '\\' devant le ';' renseigne le shell pour éviter l'interprétation). Le premier '0' correspond à la ligne et le deuxième correspond a la colonne. Attention, sous un xterm, cette séquence ne fonctionne pas. _________________________________________________________ 5. Rafraîchissement Vous pouvez faire un clear de la facon suivante: # echo ^[[2J _________________________________________________________ 6. Inclusion dans du code C Bien sûr, il peut vous paraître pénible d'ecrire le ^[. Lorsque vous mettez ces séquences dans du code, vous pouvez les noter en octal ou en hexadécimal, ainsi l'exemple pris dans Introduction" devient (en octal): printf("\033[7mtiti\033[m"); ce qui n'est pas forcément plus court, mais qui vous débarasse des Control-[ . _________________________________________________________ 7. Conclusion Il est évident qu'il existe encore beaucoup d'autres codes, mais je ne les connais pas. Si vous en connaissez d'autres, ou si vous avez quelques références, ce serait sympa de me les communiquer.