Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
tutoriel:formater_le_texte_dans_le_terminal_avec_tput [Le 26/08/2018, 18:19]
zococo [Mise en couleur]
tutoriel:formater_le_texte_dans_le_terminal_avec_tput [Le 31/03/2023, 13:48]
176.128.237.48 [Insérer et effacer du texte]
Ligne 1: Ligne 1:
-{{tag>​Bionic Xenial console tutoriel ​formater_le_texte_dans_le_terminal_avec_tput BROUILLON}}+{{tag>​Bionic Xenial console ​terminal ​tutoriel ​tput_formater_le_texte_dans_le_terminal}}
  
 ---- ----
  
-====== ​tput, jouer avec le curseur et les couleurs dans le terminal ======+====== ​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'​initialiser ou réinitialiser le terminal.+Tput est un utilitaire qui utilise la base de données terminfo pour modifier le paramétrage du terminal. Il permet d'​initialiser ou réinitialiser le terminal.
  
-tput peut notamment être utilisé pour déplacer le curseur à l'​intérieur du terminal et ajouter un peu de décoration au texte (couleur, formatage). Il peut aussi permettre de personnaliser l'​invite de commande.+Tput peut notamment être utilisé pour déplacer le curseur à l'​intérieur du terminal et ajouter un peu de décoration au texte (couleur, formatage). Il peut aussi permettre de personnaliser l'​invite de commande.
  
 Ce tutoriel donne quelques pistes pour utiliser la couleur et déplacer le curseur à l'​intérieur du terminal, avec et sans tput. Ce tutoriel donne quelques pistes pour utiliser la couleur et déplacer le curseur à l'​intérieur du terminal, avec et sans tput.
-<note important>​Chaque section aura **un titre de niveau 2** (H2) puis ses sous-sections,​ **un titre de niveau 3** (H3) et ainsi de suite… Remarque : il n'y a que 5 niveaux de titre, ce qui devrait être amplement suffisant.</​note>​ 
- 
 ===== Pré-requis ===== ===== Pré-requis =====
  
Ligne 30: Ligne 28:
  
 Les codes numérotés 30 à 37 permettent de définir la couleur du texte (foreground),​ les codes 40 à 47 concernent l'​arrière plan (background). Voici la liste de ces codes : Les codes numérotés 30 à 37 permettent de définir la couleur du texte (foreground),​ les codes 40 à 47 concernent l'​arrière plan (background). Voici la liste de ces codes :
- +^ Code ^  Couleur ​ ^  ^ 
-30 et 40 noir +30 et 40 noir|  | 
-31 et 41 rouge +31 et 41 rouge|  | 
-32 et 42 vert +32 et 42 vert|  | 
-33 et 43 jaune +33 et 43 jaune|  | 
-34 et 44 bleu +34 et 44 bleu|  | 
-35 et 45 rose +35 et 45 rose|  | 
-36 et 46 cyan +36 et 46 cyan|  | 
-37 et 47 gris+37 et 47 gris|  |
  
 ==== La décoration ==== ==== La décoration ====
  
-Quelques éléments de formatage du texte peuvent également être définis. ​Il sont activés par les code ssuivants ​+Quelques éléments de formatage du texte peuvent également être définis. ​Ils sont activés par les codes suivants ​
-gras +^ code ^ effet ^ 
-soulignement +gras| | 
-clignotant (ne fonctionne pas avec tous les terminaux) +soulignement ​| | 
-surlignement+clignotant (ne fonctionne pas avec tous les terminaux) ​| | 
 +surlignement ​| |
  
 ==== Retour au formatage par défaut : code 0 ==== ==== Retour au formatage par défaut : code 0 ====
Ligne 56: Ligne 55:
 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é : 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é :
 <​code>​ <​code>​
-echo -e "Voici le \033[33m\033[1m\033[4m\033[41mle \033[7mtexte\033[0m mis en forme."​+echo -e "Voici le \033[33m\033[1m\033[4m\033[41mle \033[7mtexte\033[0m mis en forme."​
 </​code>​ </​code>​
  
-Cette mise en forme peut se condenser ainsi, en séparant les formatage ​par un ';'​ :+Cette mise en forme peut se condenser ainsi, en séparant les formatages ​par un ';'​ :
 <​code>​ <​code>​
-echo -e "Voici le \e[33;​1;​4;​41mle \E[7mtexte\033[0m mis en forme selon la forme condensée."​+echo -e "Voici le \e[33;​1;​4;​41mle \E[7mtexte\033[0m mis en forme selon la forme condensée."​
 </​code>​ </​code>​
  
Ligne 126: Ligne 125:
  
 ===== Méthode tput un peu plus ergonomique ===== ===== Méthode tput un peu plus ergonomique =====
 +L'​utilisation de la commande tput appartenant au paquet ncurses permet d'​utiliser une notation plus aidée à appréhender par l'​utilisateur.
 +
 +<note help>​Comment savoir si la librairie ncurses est installée sur mon système ?
 +
 +En général la librairie est installée par défaut. La commande dpkg -l permet de s'en assurer :
 +<​code>​
 +$ dpkg -l *ncurses*
 +Souhait=inconnU/​Installé/​suppRimé/​Purgé/​H=à garder
 +| État=Non/​Installé/​fichier-Config/​dépaqUeté/​échec-conFig/​H=semi-installé/​W=attend-traitement-déclenchements
 +|/ Err?​=(aucune)/​besoin Réinstallation (État,Err: majuscule=mauvais)
 +||/ Nom                 ​Version ​       Architecture ​  ​Description
 ++++-===================-==============-==============-============================================
 +ii  libncurses5:​amd64 ​  ​6.0+20160213-1 amd64          shared libraries for terminal handling
 +ii  libncurses5:​i386 ​   6.0+20160213-1 i386           ​shared libraries for terminal handling
 +ii  libncursesw5:​amd64 ​ 6.0+20160213-1 amd64          shared libraries for terminal handling (wide
 +ii  ncurses-base ​       6.0+20160213-1 all            basic terminal type definitions
 +ii  ncurses-bin ​        ​6.0+20160213-1 amd64          terminal-related programs and man pages
 +un  ncurses-runtime ​    <​aucune> ​      <​aucune> ​      ​(aucune description n'est disponible)
 +ii  ncurses-term ​       6.0+20160213-1 all            additional terminal type definition
 +</​code>​
 +
 +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'​ dans le terminal :
 +<​code>​
 +$ tput
 +usage: tput [-V] [-S] [-T term] capname
 +</​code>​
 +</​note>​
 +
 +<note tip>​Installation du paquet ncurses
 +
 +Fin 2018, la dernière version de la libriairie ncurses présente dans les dépôts est la version 5. Elle s'​installe ainsi :
 +<​code>​
 +$ sudo apt-get install libncurses5
 +</​code>​
 +</​note>​
 ==== Mise en couleur ==== ==== Mise en couleur ====
 === Mise en couleur du texte (échappement ANSI) : setaf === === Mise en couleur du texte (échappement ANSI) : setaf ===
Ligne 132: Ligne 166:
 syntaxe : syntaxe :
 <​code>​ <​code>​
-tput setaf [code_couleur]+tput setaf [code_couleur]
 </​code>​ </​code>​
  
Ligne 138: Ligne 172:
 La commande setf ne paraît pas fonctionner dans les terminaux xterm. La commande setf ne paraît pas fonctionner dans les terminaux xterm.
 <​code>​ <​code>​
-tput setf [code_couleur]+tput setf [code_couleur]
 </​code>​ </​code>​
  
 === Mise en couleur de l'​arrière plan (background - échappement ANSI) : setab === === Mise en couleur de l'​arrière plan (background - échappement ANSI) : setab ===
 <​code>​ <​code>​
-tput setab [code_couleur]+tput setab [code_couleur]
 </​code>​ </​code>​
  
Ligne 149: Ligne 183:
 La commande setb ne paraît pas fonctionner dans les terminaux xterm. La commande setb ne paraît pas fonctionner dans les terminaux xterm.
 <​code>​ <​code>​
-tput setb [code_couleur]+tput setb [code_couleur]
 </​code>​ </​code>​
  
Ligne 164: Ligne 198:
 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 : 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 :
 <​code>​ <​code>​
-tput colors+tput colors
 </​code>​ </​code>​
 Si le retour de la commande est '​256',​ vous pouvez étendre votre terrain de jeux. Le code couleur doit être annoncé sur 3 chiffres (de 001 à 256). Si le retour de la commande est '​256',​ vous pouvez étendre votre terrain de jeux. Le code couleur doit être annoncé sur 3 chiffres (de 001 à 256).
Ligne 170: Ligne 204:
 Syntaxe de base de tput Syntaxe de base de tput
 <​code>​ <​code>​
-echo "Texte ordinaire "​$(tput setaf 3; tput setab 1)"​jaune sur fond rouge"​$(tput sgr0)" à nouveau ordinaire."​+echo "Texte ordinaire "​$(tput setaf 3; tput setab 1)"​jaune sur fond rouge"​$(tput sgr0)" à nouveau ordinaire."​
 </​code>​ </​code>​
-Cette syntaxe ​put être rendue plus compréhensible en utilisant des variables bien choisies. Ainsi, dans l'​exemple suivant, l'​afichage ​de $rouge place le texte en rouge, celui de $ordinaire rétabli les paramètres par défaut :+Cette syntaxe ​peut être rendue plus compréhensible en utilisant des variables bien choisies. Ainsi, dans l'​exemple suivant, l’affichage ​de $rouge place le texte en rouge, celui de $ordinaire rétabli les paramètres par défaut :
 <​code>​ <​code>​
-rouge=$(tput setaf 1) +rouge=$(tput setaf 1) 
-ordinairel=$(tput sgr0) +$ ordinaire=$(tput sgr0) 
-echo "avant ""​$rouge""​Le Texte""​$ordinaire""​ après"​+echo "avant ""​$rouge""​Le Texte""​$ordinaire""​ après"​
 </​code>​ </​code>​
 === Un script en guise d'​aide-mémoire === === Un script en guise d'​aide-mémoire ===
 Pour afficher les 8 couleurs principales : Pour afficher les 8 couleurs principales :
 <​code>​ <​code>​
 +#!/bin/bash
 couleurs=(Noir Rouge Vert Jaune Bleu Magenta Cyan Blanc); ​ couleurs=(Noir Rouge Vert Jaune Bleu Magenta Cyan Blanc); ​
 for i in $(seq 1 7);  for i in $(seq 1 7); 
Ligne 186: Ligne 221:
  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)"; ​  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  done
-et le résulat :+exit 0;
 </​code>​ </​code>​
 +et le résultat :
 +{{ :​tutoriel:​tput_xenial_01.png?​direct&​600 |}}
 Pour visualiser les 256 couleurs possibles Pour visualiser les 256 couleurs possibles
 <​code>​ <​code>​
-for i in {0..256};do o=00$i;echo -ne "​${o:​${#​o}-3:​3} "​$(tput setaf $i;tput setab $i)" ​  "​$(tput sgr0);​done; ​+for i in {0..256};do o=00$i;echo -ne "​${o:​${#​o}-3:​3} "​$(tput setaf $i;tput setab $i)" ​  "​$(tput sgr0);​done; ​ 
 +</​code>​ 
 +{{ :​administration:​tput_xenial_02.png?​direct&​600 |}} 
 +==== S'​informer sur les dimensions du terminal ==== 
 +tput lines et tput cols permettent de déterminer le nombre de ligne et de colonnes du terminal. 
 +<​code>​ 
 +tput lines 
 +tput cols
 </​code>​ </​code>​
  
-==== Titre 1 ==== +==== Déplacer le curseur à l'​intérieur du terminal ​==== 
-sous étape une+Placer le curseur en position x y (colonnes et lignes) 
 +<​code>​ 
 +tput cup Y X 
 +tput cup 6 9 
 +</​code>​ 
 +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 
 +<​code>​ 
 +tput cub1 
 +</​code>​ 
 +Déplacement de N caractère vers la gauche : cub N 
 +<​code>​ 
 +tput cub N 
 +echo "​Anticonstitutionnellement"​$(tput cub 10)"​sèche"​ 
 +echo "​Anticonstitutionnellement"​$(tput cub 21)"​sèche"​$(tput el) 
 +</​code>​
  
 +=== Déplacer le curseur vers la droite ===
 +Déplacement d'un caractère vers la droite : cuf1
 +<​code>​
 +tput cuf1
 +echo "​UN""​exemple qui ajoute un espace"​
 +echo "​UN"​$(tput cuf1)"​exemple qui ajoute un espace"​
 +</​code>​
 +Déplacement de N caractère vers la droite : cuf N
 +<​code>​
 +tput cuf N
 +</​code>​
  
-===== Conclusion =====+=== Remonter d'une ligne === 
 +<​code>​ 
 +tput cuu1 
 +</​code>​
  
-Voilavous savez maintenant faire le café avec Ubuntu !+=== Se rendre en dernière lignepremière colonne === 
 +<​code>​ 
 +tput ll 
 +</​code>​ 
 + 
 +=== Revenir à la position initiale === 
 +Tput peut enregistrer une position ​avec 'tput sc' puis y revenir après plusierus dépalcements avec 'tput rc' 
 +<​code>​ 
 +tput sc 
 +... 
 +tput rc 
 +</​code>​ 
 + 
 +==== Insérer et effacer du texte ==== 
 +=== Insertion === 
 +Insertion d'un caractère 
 +<​code>​ 
 +tput ich1 
 +</​code>​ 
 +Insertion de N caractères 
 +<​code>​ 
 +tput ich N 
 +</​code>​ 
 +Insertion de N lignes 
 +<​code>​ 
 +tput il N Insert N lignes 
 +</​code>​ 
 + 
 +=== Effacement === 
 +Effacement de N caractères 
 +<​code>​ 
 +tput ech N 
 +</​code>​ 
 +Effacement du début de la ligne (par rapport à la position courante) 
 +<​code>​ 
 +tput el1 
 +echo "​Anticonstitutionnellement"​ 
 +echo "​Anti"​$(tput el1)"​constitutionnellement"​ 
 +</​code>​ 
 +Effacement de la fin de la ligne (par rapport à la position courante) 
 +<​code>​ 
 +tput el 
 +echo "​Anticonstitutionnellement"​$(tput cub 6; tput el) 
 +</​code>​ 
 +Effacement jusqu'​à la fin de l'​écran (par rapport à la position courante) 
 +<​code>​ 
 +tput ed 
 +</​code>​ 
 +Effacement de l'​ensemble de l'​écran et déplacement du curseur en position 0,0 (en haut à gauche) 
 +<​code>​ 
 +tput clear 
 +</​code>​ 
 +Pour obtenir davantage d'​informations sur tput (en anglais, of course) : ne pas oublier le manuel 
 +<​code>​ 
 +man tput 
 +man terminfo 
 +</​code>​
  
-===== Problèmes connus===== 
  
-Si votre café est trop fort, saisissez la commande suivante dans un [[:​terminal]]:​ ... 
  
 ===== Voir aussi ===== ===== Voir aussi =====
  
-  * [[FR http://​www.tux-planet.fr/​les-codes-de-couleurs-en-bash/​|les codes couleurs en bash]] sur le site tux-planet +  * [[http://​www.tux-planet.fr/​les-codes-de-couleurs-en-bash/​|les codes couleurs en bash]] sur le site tux-planet ​ ​**(fr)** 
-  * [[FR https://​www.commentcamarche.com/​faq/​14740-coloration-du-shell-bash|coloration du shell bash]] +  * [[https://​www.commentcamarche.com/​faq/​14740-coloration-du-shell-bash|coloration du shell bash]] ​ ​**(fr)** 
-  * [[EN https://​www.admin-linux.fr/​bash-de-la-couleur-dans-le-shell/​|Bash : De la couleur dans le shell]] +  * [[https://​www.admin-linux.fr/​bash-de-la-couleur-dans-le-shell/​|Bash : De la couleur dans le shell]] ​ ​**(fr)** 
-  * [[EN https://​unix.stackexchange.com/​questions/​269077/​tput-setaf-color-table-how-to-determine-color-codes|Connaître les couleurs disponibles avec setaf]] +  * [[https://​unix.stackexchange.com/​questions/​269077/​tput-setaf-color-table-how-to-determine-color-codes|Connaître les couleurs disponibles avec setaf]] ​ ​**(en)** 
-  * [[EN http://​tldp.org/​HOWTO/​Bash-Prompt-HOWTO/​x361.html|Mouvement du curseur]]+  * [[https://​tldp.org/​HOWTO/​Bash-Prompt-HOWTO/​x361.html|Mouvement du curseur]] ​ ​**(en)**
  
 Tput Tput
-  * [[FR http://​ti1.free.fr/​index.php/​bash-tput/​|Aide-mémoire tput]] +  * [[http://​ti1.free.fr/​index.php/​bash-tput/​|Aide-mémoire tput]] ​ ​**(fr)** 
-  * [[FR https://​www.it-connect.fr/​linux-gestion-dadressage-du-curseur-avec-tput/​|Linux : Gestion d’adressage du curseur avec tput]] +  * [[https://​www.it-connect.fr/​linux-gestion-dadressage-du-curseur-avec-tput/​|Linux : Gestion d’adressage du curseur avec tput]] ​ ​**(fr)** 
-  * [[FR https://​www.commentcamarche.com/​faq/​6458-la-commande-tput|La commande tput]] +  * [[https://​www.commentcamarche.com/​faq/​6458-la-commande-tput|La commande tput]] ​ ​**(fr)** 
-  * [[EN http://​www.tldp.org/​HOWTO/​Bash-Prompt-HOWTO/​x405.html|Coloration et déplacement du curseur avec tput]] +  * [[http://​www.tldp.org/​HOWTO/​Bash-Prompt-HOWTO/​x405.html|Coloration et déplacement du curseur avec tput]] ​ ​**(en)** 
-  * [[EN https://​raymii.org/​s/​snippets/​Bash_Bits_Add_Color_Output_To_Your_Scripts.html|Ajoutez des couleurs aux sorties de vos scripts]] +  * [[https://​raymii.org/​s/​snippets/​Bash_Bits_Add_Color_Output_To_Your_Scripts.html|Ajoutez des couleurs aux sorties de vos scripts]] ​ ​**(en)** 
-  * [[EN http://​www.linuxcommand.org/​lc3_adv_tput.php|Créer une horloge]] +  * [[http://​www.linuxcommand.org/​lc3_adv_tput.php|Créer une horloge]] ​ ​**(en)** 
-  * [[EN https://​en.wikipedia.org/​wiki/​Tput|Tput sur wikipedia]] +  * [[https://​en.wikipedia.org/​wiki/​Tput|Tput sur wikipedia]] ​ ​**(en)** 
-  * [[EN http://​man7.org/​linux/​man-pages/​man1/​tput.1.html|Page man]] +  * [[https://​man7.org/​linux/​man-pages/​man1/​tput.1.html|Page man]]  ​**(en)** 
-  * [[EN https://​www.gnu.org/​software/​termutils/​manual/​termutils-2.0/​html_chapter/​tput_1.html|tput sur gnu.org]] +  * [[https://​www.gnu.org/​software/​termutils/​manual/​termutils-2.0/​html_chapter/​tput_1.html|tput sur gnu.org]] 
-  * [[EN https://​www.thegeekstuff.com/​2011/​01/​tput-command-examples/​|9 UNIX / Linux tput Examples: Control Your Terminal Color and Cursor]] +  * [[https://​www.thegeekstuff.com/​2011/​01/​tput-command-examples/​|9 UNIX / Linux tput Examples: Control Your Terminal Color and Cursor]] ​ ​**(en)** 
-  * [[EN https://​stackoverflow.com/​questions/​14259311/​set-or-change-vertical-position-of-the-cursor|Un menu pour vos scripts]] +  * [[https://​stackoverflow.com/​questions/​14259311/​set-or-change-vertical-position-of-the-cursor|Un menu pour vos scripts]] ​ ​**(en)** 
-  * [[EN https://​stackoverflow.com/​questions/​18893492/​why-is-there-both-setf-setb-and-setaf-setab-in-tput|Why is there both setf/setb and setaf/setab in tput?]]+  * [[https://​stackoverflow.com/​questions/​18893492/​why-is-there-both-setf-setb-and-setaf-setab-in-tput|Why is there both setf/setb and setaf/setab in tput?​]] ​ ​**(en)**
  
 Personnaliser le prompt Personnaliser le prompt
-  * [[FR https://​www.admin-linux.fr/​personnaliser-le-prompt/​|Personnaliser le prompt]] +  * [[https://​www.admin-linux.fr/​personnaliser-le-prompt/​|Personnaliser le prompt]] ​ ​**(fr)** 
-  * [[FR https://​www.commentcamarche.com/​faq/​14740-coloration-du-shell-bash|Coloration de l'​invite de commande]] +  * [[https://​www.commentcamarche.com/​faq/​14740-coloration-du-shell-bash|Coloration de l'​invite de commande]] ​ ​**(fr)** 
-  * [[EN https://​wiki.archlinux.org/​index.php/​Bash/​Prompt_customization|Personnalisation du prompt]]+  * [[https://​wiki.archlinux.org/​index.php/​Bash/​Prompt_customization|Personnalisation du prompt]] ​ ​**(en)**
  
 ---- ----
  
-<note help>Si vous considérez que votre contribution à la page de documentation est significative et/ou que vous souhaitez pouvoir être contacté par les lecteurs, vous avez la possibilité de la signer en ajoutant votre identifiant dans la ligne ci-dessous. Vous pouvez aussi vous abonner aux modifications de la page en cliquant sur "​S'​abonner à la page" (menu en haut à gauche). +//​Contributeurs principaux : [[:​utilisateurs:​zococo|zococo]].//
-</​note>​ +
- +
-//​Contributeurs principaux : [[:​utilisateurs:​votre_identifiant|votre nom ou pseudonyme]],​ [[:​utilisateurs:​autre_identifiant|nom ou pseudo autre]].//​ +
- +
-<note help>Si vous vous êtes basé sur un document existant pour écrire votre article, citez la source originale ! Ceci est indispensable afin de respecter les droits d'​auteur.</​note>​ +
- +
-//Basé sur [[http://​www.document_source.com|« Titre original de l'​article »]] par Auteur Original.//+
  
  • tutoriel/formater_le_texte_dans_le_terminal_avec_tput.txt
  • Dernière modification: Le 31/03/2023, 13:48
  • par 176.128.237.48