Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
tutoriel:formater_le_texte_dans_le_terminal_avec_tput [Le 31/08/2018, 21:13] – [Mise en couleur] zococo | tutoriel:formater_le_texte_dans_le_terminal_avec_tput [Le 31/08/2018, 21:45] (Version actuelle) – [Mise en couleur] zococo | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | {{tag> | ||
+ | |||
+ | ---- | ||
+ | |||
+ | ====== Tput, jouer avec le curseur et les couleurs dans le terminal ====== | ||
+ | |||
+ | Tput est un utilitaire qui utilise la base de données terminfo pour modifier le paramétrage du terminal. Il permet d' | ||
+ | |||
+ | Tput peut notamment être utilisé pour déplacer le curseur à l' | ||
+ | |||
+ | Ce tutoriel donne quelques pistes pour utiliser la couleur et déplacer le curseur à l' | ||
+ | ===== Pré-requis ===== | ||
+ | |||
+ | Savoir un peu utiliser le terminal. | ||
+ | |||
+ | ===== Méthode bien connue et un peu ésotérique des caractères d' | ||
+ | |||
+ | La méthode semble-t-il la plus fréquemment rencontrée sur le web ne fait pas appel à tput mais à une succession de codes qui, pour efficaces qu'ils soient, rendent la lecture des scripts un peu difficile. Cette méthode nécessite de préfixer le texte à traiter par ' | ||
+ | |||
+ | Exemples d' | ||
+ | < | ||
+ | echo -e " | ||
+ | echo -e "Un texte en \e[32m\033[43mvert sur fond jaune\E[0m" | ||
+ | echo -e "Et voici \033[31m\033[1m\033[4m\033[5m\033[7mun texte\033[0m mis en forme selon une forme particulièrement peu explicite." | ||
+ | </ | ||
+ | |||
+ | ==== Les codes couleur ==== | ||
+ | |||
+ | Les codes numérotés 30 à 37 permettent de définir la couleur du texte (foreground), | ||
+ | ^ Code ^ Couleur | ||
+ | | 30 et 40 | noir| | | ||
+ | | 31 et 41 | rouge| | ||
+ | | 32 et 42 | vert| | | ||
+ | | 33 et 43 | jaune| | ||
+ | | 34 et 44 | bleu| | | ||
+ | | 35 et 45 | rose| | | ||
+ | | 36 et 46 | cyan| | | ||
+ | | 37 et 47 | gris| | | ||
+ | |||
+ | ==== La décoration ==== | ||
+ | |||
+ | Quelques éléments de formatage du texte peuvent également être définis. Ils sont activés par les codes suivants : | ||
+ | ^ code ^ effet ^ | ||
+ | | 1 | gras| | | ||
+ | | 4 | soulignement | | | ||
+ | | 5 | clignotant (ne fonctionne pas avec tous les terminaux) | | | ||
+ | | 7 | surlignement | | | ||
+ | |||
+ | ==== Retour au formatage par défaut : code 0 ==== | ||
+ | Le retour aux valeurs de base est assuré par l' | ||
+ | |||
+ | ==== Utilisation de plusieurs codes successifs ==== | ||
+ | Ainsi qu'il a été vu infra, il est possible d' | ||
+ | |||
+ | La méthode la plus simple consiste à se faire succéder les différents codes dans leur intégralité. Exemple d'un texte jaune, gras sur fond rouge, avec un mot passé en surligné : | ||
+ | < | ||
+ | $ echo -e "Voici le \033[33m\033[1m\033[4m\033[41mle \033[7mtexte\033[0m mis en forme." | ||
+ | </ | ||
+ | |||
+ | Cette mise en forme peut se condenser ainsi, en séparant les formatages par un ';' | ||
+ | < | ||
+ | $ echo -e "Voici le \e[33; | ||
+ | </ | ||
+ | |||
+ | ==== Aide-mémoire des séquences d' | ||
+ | |||
+ | Un script aide-mémoire est disponible sur le site www.admin-linux.fr dont vous trouverez ci-dessous une version un peu modifiée : | ||
+ | |||
+ | < | ||
+ | #!/bin/bash | ||
+ | function usage () { | ||
+ | echo " | ||
+ | echo "Ce script permet de visualiser les codes couleurs et quelques effets de décoration utilisables dans bash" | ||
+ | exit 10 | ||
+ | } | ||
+ | |||
+ | if [[ " | ||
+ | |||
+ | # Texte de l' | ||
+ | TEXT=" Bash " ; | ||
+ | |||
+ | # Couleur du texte : | ||
+ | declare -a FG=('' | ||
+ | ' | ||
+ | |||
+ | echo | ||
+ | |||
+ | # Première ligne : | ||
+ | printf "FG \ BG\t%${# | ||
+ | for bg in {40..47} ; do | ||
+ | printf " | ||
+ | done | ||
+ | echo ; | ||
+ | |||
+ | # Création du tableau de présentation des combinaisons : | ||
+ | for fg in ${!FG[*]} ; do | ||
+ | echo -ne " | ||
+ | for bg in {40..47} ; do | ||
+ | echo -ne " | ||
+ | done | ||
+ | echo ; | ||
+ | done | ||
+ | |||
+ | # Comment déclarer une couleur : | ||
+ | cat << | ||
+ | |||
+ | FG = texte (foreground) \ BG = arrière-plan (background) | ||
+ | |||
+ | Comment déclarer une couleur : | ||
+ | ------------------------------ | ||
+ | | ||
+ | de FG ou BG" ; | ||
+ | | ||
+ | |||
+ | Exemples : | ||
+ | echo -e " | ||
+ | echo -e " | ||
+ | peut aussi s' | ||
+ | echo -e " | ||
+ | echo -e " | ||
+ | Pour plus de détails : http:// | ||
+ | |||
+ | _eof_ | ||
+ | </ | ||
+ | |||
+ | ===== Méthode tput un peu plus ergonomique ===== | ||
+ | L' | ||
+ | |||
+ | <note help> | ||
+ | |||
+ | En général la librairie est installée par défaut. La commande dpkg -l permet de s'en assurer : | ||
+ | < | ||
+ | $ dpkg -l *ncurses* | ||
+ | Souhait=inconnU/ | ||
+ | | État=Non/ | ||
+ | |/ Err? | ||
+ | ||/ Nom | ||
+ | +++-===================-==============-==============-============================================ | ||
+ | ii libncurses5: | ||
+ | ii libncurses5: | ||
+ | ii libncursesw5: | ||
+ | ii ncurses-base | ||
+ | ii ncurses-bin | ||
+ | un ncurses-runtime | ||
+ | ii ncurses-term | ||
+ | </ | ||
+ | |||
+ | Si libncurses apparaît dans la liste, le paquet ncurses est installé. Une autre manière un peu simpliste mais très efficace de le savoir consiste tout simplement à saisir ' | ||
+ | < | ||
+ | $ tput | ||
+ | usage: tput [-V] [-S] [-T term] capname | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | <note tip> | ||
+ | |||
+ | Fin 2018, la dernière version de la libriairie ncurses présente dans les dépôts est la version 5. Elle s' | ||
+ | < | ||
+ | $ sudo apt-get install libncurses5 | ||
+ | </ | ||
+ | </ | ||
+ | ==== Mise en couleur ==== | ||
+ | === Mise en couleur du texte (échappement ANSI) : setaf === | ||
+ | La commande setaf, suivie d'un code numérique de 1 à 7 permet de changer la couleur du texte. | ||
+ | Setaf fonctionne avec les terminaux xterm (a priori cas général sous Ubuntu). On utilise sgr0 pour revenir aux valeurs par défaut. | ||
+ | syntaxe : | ||
+ | < | ||
+ | $ tput setaf [code_couleur] | ||
+ | </ | ||
+ | |||
+ | === Mise en couleur du texte (sans échappement du texte) : setf === | ||
+ | La commande setf ne paraît pas fonctionner dans les terminaux xterm. | ||
+ | < | ||
+ | $ tput setf [code_couleur] | ||
+ | </ | ||
+ | |||
+ | === Mise en couleur de l' | ||
+ | < | ||
+ | $ tput setab [code_couleur] | ||
+ | </ | ||
+ | |||
+ | === Mise en couleur de l' | ||
+ | La commande setb ne paraît pas fonctionner dans les terminaux xterm. | ||
+ | < | ||
+ | $ tput setb [code_couleur] | ||
+ | </ | ||
+ | |||
+ | === Tableau des couleurs : === | ||
+ | ^ Couleur | ||
+ | | noir |0| | | ||
+ | | rouge | 1 | | | ||
+ | | vert |2| | | ||
+ | | jaune |3| | | ||
+ | | bleu |4| | | ||
+ | | magenta | ||
+ | | cyan |6| | | ||
+ | | blanc |7| | | ||
+ | Le nombre des couleurs possible est désormais généralement égal à 256 au moins. Pour le vérifier, il suffit de saisir dans le terminal la commande suivante : | ||
+ | < | ||
+ | $ tput colors | ||
+ | </ | ||
+ | Si le retour de la commande est ' | ||
+ | === Exemples d' | ||
+ | Syntaxe de base de tput | ||
+ | < | ||
+ | $ echo "Texte ordinaire " | ||
+ | </ | ||
+ | Cette syntaxe put être rendue plus compréhensible en utilisant des variables bien choisies. Ainsi, dans l' | ||
+ | < | ||
+ | $ rouge=$(tput setaf 1) | ||
+ | $ ordinaire=$(tput sgr0) | ||
+ | $ echo "avant "" | ||
+ | </ | ||
+ | === Un script en guise d' | ||
+ | Pour afficher les 8 couleurs principales : | ||
+ | < | ||
+ | #!/bin/bash | ||
+ | couleurs=(Noir Rouge Vert Jaune Bleu Magenta Cyan Blanc); | ||
+ | for i in $(seq 1 7); | ||
+ | do | ||
+ | echo -e " $(tput setaf $i)${couleurs[$i]}\tTexte$(tput sgr0)\t$(tput bold)$(tput setaf $i)Texte$(tput sgr0)\t$(tput sgr 0 1)$(tput setaf $i)Texte$(tput sgr0)\t(tput setaf $i)"; | ||
+ | done | ||
+ | exit 0; | ||
+ | </ | ||
+ | et le résultat : | ||
+ | {{ : | ||
+ | Pour visualiser les 256 couleurs possibles | ||
+ | < | ||
+ | $ for i in {0..256};do o=00$i;echo -ne " | ||
+ | </ | ||
+ | {{ : | ||
+ | ==== S' | ||
+ | tput lines et tput cols permettent de déterminer le nombre de ligne et de colonnes du terminal. | ||
+ | < | ||
+ | tput lines | ||
+ | tput cols | ||
+ | </ | ||
+ | |||
+ | ==== Déplacer le curseur à l' | ||
+ | Placer le curseur en position x y (colonnes et lignes) | ||
+ | < | ||
+ | tput cup Y X | ||
+ | tput cup 6 9 | ||
+ | </ | ||
+ | La dernière commande place le curseur en colonne 6 ligne 9 | ||
+ | === Déplacer le curseur vers la gauche === | ||
+ | Déplacement d'un caractère vers la gauche : cub1 | ||
+ | < | ||
+ | tput cub1 | ||
+ | </ | ||
+ | Déplacement de N caractère vers la gauche : cub N | ||
+ | < | ||
+ | tput cub N | ||
+ | echo " | ||
+ | echo " | ||
+ | </ | ||
+ | |||
+ | === Déplacer le curseur vers la droite === | ||
+ | Déplacement d'un caractère vers la droite : cuf1 | ||
+ | < | ||
+ | tput cuf1 | ||
+ | echo " | ||
+ | echo " | ||
+ | </ | ||
+ | Déplacement de N caractère vers la droite : cuf N | ||
+ | < | ||
+ | tput cuf N | ||
+ | </ | ||
+ | |||
+ | === Remonter d'une ligne === | ||
+ | < | ||
+ | tput cuu1 | ||
+ | </ | ||
+ | |||
+ | === Se rendre en dernière ligne, première colonne === | ||
+ | < | ||
+ | tput ll | ||
+ | </ | ||
+ | |||
+ | === Revenir à la position initiale === | ||
+ | Tput peut enregistrer une position avec 'tput sc' puis y revenir après plusierus dépalcements avec 'tput rc' | ||
+ | < | ||
+ | tput sc | ||
+ | ... | ||
+ | tput rc | ||
+ | </ | ||
+ | |||
+ | ==== Insérer et effacer du texte ==== | ||
+ | === Insertion === | ||
+ | Insertion d'un caractère | ||
+ | < | ||
+ | tput ich1 | ||
+ | </ | ||
+ | Insertion de N caractères | ||
+ | < | ||
+ | tput ich N | ||
+ | </ | ||
+ | Insertion de N lignes | ||
+ | < | ||
+ | tput il N Insert N lignes | ||
+ | </ | ||
+ | |||
+ | === Effacement === | ||
+ | Effacement de N caractères | ||
+ | < | ||
+ | tput ech N | ||
+ | </ | ||
+ | Effacement du début de la ligne (par rapport à la position courante) | ||
+ | < | ||
+ | tput el1 | ||
+ | echo " | ||
+ | echo " | ||
+ | </ | ||
+ | Effacement de la fin de la ligne (par rapport à la position courante) | ||
+ | < | ||
+ | tput el | ||
+ | echo " | ||
+ | </ | ||
+ | Effacement jusqu' | ||
+ | < | ||
+ | tput ed | ||
+ | </ | ||
+ | Effacement de l' | ||
+ | < | ||
+ | tput clear Efface l’écran et place le curseur à 0,0 | ||
+ | </ | ||
+ | Pour obtenir davantage d' | ||
+ | < | ||
+ | man tput | ||
+ | man terminfo | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | ===== Voir aussi ===== | ||
+ | |||
+ | * [[http:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[http:// | ||
+ | |||
+ | Tput | ||
+ | * [[http:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[http:// | ||
+ | * [[https:// | ||
+ | * [[http:// | ||
+ | * [[https:// | ||
+ | * [[http:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | |||
+ | Personnaliser le prompt | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | |||
+ | ---- | ||
+ | |||
+ | // | ||