Différences
Ci-dessous, les différences entre deux révisions de la page.
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, 19:22] zococo [Voir aussi] |
tutoriel:formater_le_texte_dans_le_terminal_avec_tput [Le 31/03/2023, 13:48] (Version actuelle) 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 : |
- | 1 : gras | + | ^ code ^ effet ^ |
- | 4 : soulignement | + | | 1 | gras| | |
- | 5 : clignotant (ne fonctionne pas avec tous les terminaux) | + | | 4 | soulignement | | |
- | 7 : surlignement | + | | 5 | clignotant (ne fonctionne pas avec tous les terminaux) | | |
+ | | 7 | 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> | </code> | ||
+ | {{ :administration:tput_xenial_02.png?direct&600 |}} | ||
==== S'informer sur les dimensions du terminal ==== | ==== 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. | tput lines et tput cols permettent de déterminer le nombre de ligne et de colonnes du terminal. | ||
Ligne 286: | Ligne 323: | ||
Effacement de l'ensemble de l'écran et déplacement du curseur en position 0,0 (en haut à gauche) | Effacement de l'ensemble de l'écran et déplacement du curseur en position 0,0 (en haut à gauche) | ||
<code> | <code> | ||
- | tput clear Efface l’écran et place le curseur à 0,0 | + | tput clear |
</code> | </code> | ||
Pour obtenir davantage d'informations sur tput (en anglais, of course) : ne pas oublier le manuel | Pour obtenir davantage d'informations sur tput (en anglais, of course) : ne pas oublier le manuel | ||
Ligne 294: | Ligne 331: | ||
</code> | </code> | ||
- | ===== Conclusion ===== | ||
- | |||
- | Voila, vous savez maintenant faire le café avec Ubuntu ! | ||
- | |||
- | ===== Problèmes connus===== | ||
- | Si votre café est trop fort, saisissez la commande suivante dans un [[:terminal]]: ... | ||
===== Voir aussi ===== | ===== Voir aussi ===== | ||
Ligne 308: | Ligne 339: | ||
* [[https://www.admin-linux.fr/bash-de-la-couleur-dans-le-shell/|Bash : De la couleur dans le shell]] **(fr)** | * [[https://www.admin-linux.fr/bash-de-la-couleur-dans-le-shell/|Bash : De la couleur dans le shell]] **(fr)** | ||
* [[https://unix.stackexchange.com/questions/269077/tput-setaf-color-table-how-to-determine-color-codes|Connaître les couleurs disponibles avec setaf]] **(en)** | * [[https://unix.stackexchange.com/questions/269077/tput-setaf-color-table-how-to-determine-color-codes|Connaître les couleurs disponibles avec setaf]] **(en)** | ||
- | * [[http://tldp.org/HOWTO/Bash-Prompt-HOWTO/x361.html|Mouvement du curseur]] **(en)** | + | * [[https://tldp.org/HOWTO/Bash-Prompt-HOWTO/x361.html|Mouvement du curseur]] **(en)** |
Tput | Tput | ||
Ligne 318: | Ligne 349: | ||
* [[http://www.linuxcommand.org/lc3_adv_tput.php|Créer une horloge]] **(en)** | * [[http://www.linuxcommand.org/lc3_adv_tput.php|Créer une horloge]] **(en)** | ||
* [[https://en.wikipedia.org/wiki/Tput|Tput sur wikipedia]] **(en)** | * [[https://en.wikipedia.org/wiki/Tput|Tput sur wikipedia]] **(en)** | ||
- | * [[http://man7.org/linux/man-pages/man1/tput.1.html|Page man]] **(en)** | + | * [[https://man7.org/linux/man-pages/man1/tput.1.html|Page man]] **(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]] | ||
* [[https://www.thegeekstuff.com/2011/01/tput-command-examples/|9 UNIX / Linux tput Examples: Control Your Terminal Color and Cursor]] **(en)** | * [[https://www.thegeekstuff.com/2011/01/tput-command-examples/|9 UNIX / Linux tput Examples: Control Your Terminal Color and Cursor]] **(en)** |