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, 17:50] zococo [Méthode tput un peu plus ergonomique] |
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> | ||
=== Tableau des couleurs : === | === Tableau des couleurs : === | ||
- | noir 0 | + | ^ Couleur ^ Code ^ ^ |
- | rouge 1 | + | | noir |0| | |
- | vert 2 | + | | rouge | 1 | | |
- | jaune 3 | + | | vert |2| | |
- | bleu 4 | + | | jaune |3| | |
- | magenta 5 | + | | bleu |4| | |
- | cyan 6 | + | | magenta |5| | |
- | blanc 7 | + | | 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 : | ||
+ | <code> | ||
+ | $ tput colors | ||
+ | </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). | ||
=== Exemples d'utilisation permettant de rendre l'usage plus simple === | === Exemples d'utilisation permettant de rendre l'usage plus simple === | ||
+ | Syntaxe de base de tput | ||
<code> | <code> | ||
- | rouge=$(tput setaf 1) | + | $ echo "Texte ordinaire "$(tput setaf 3; tput setab 1)"jaune sur fond rouge"$(tput sgr0)" à nouveau ordinaire." |
- | ordinairel=$(tput sgr0) | + | </code> |
- | echo "avant ""$rouge""Le Texte""$ordinaire"" après" | + | 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 : |
- | usr@pc:$avant Le Texte après | + | <code> |
+ | $ rouge=$(tput setaf 1) | ||
+ | $ ordinaire=$(tput sgr0) | ||
+ | $ 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 : | ||
<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 176: | 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> | ||
+ | et le résultat : | ||
+ | {{ :tutoriel:tput_xenial_01.png?direct&600 |}} | ||
+ | Pour visualiser les 256 couleurs possibles | ||
+ | <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; | ||
+ | </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> | ||
- | Voila, vous savez maintenant faire le café avec Ubuntu ! | + | === Se rendre en dernière ligne, premiè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.// | + | |