Fonction Bash printf: 7 exemples pour Linux
Si vous utilisez le shell Bash depuis un certain temps, vous savez probablement comment imprimer des chaînes dans le terminal Linux à l'aide de la commande echo. La commande printf, cependant, facilite considérablement l'impression de texte avec un formatage spécifique.
Aujourd'hui, nous allons apprendre à utiliser la fonction printf afin d'améliorer nos compétences en script Bash.
Qu'est-ce que la fonction printf de Bash?
Comme son nom l'indique, printf est une fonction qui imprime des chaînes de texte formatées. Cela signifie que vous pouvez écrire une structure de chaîne (le format) et la remplir plus tard avec des valeurs (les arguments).
Si vous connaissez les langages de programmation C / C ++, vous savez peut-être déjà comment fonctionne printf. Printf dans le shell Bash est très similaire, mais il présente quelques petites différences.
Comment utiliser printf dans le shell Bash
La syntaxe de base de printf est:
printf format [argument]
Printf imprimera la chaîne de format lors de l'implémentation des échappements ( ) et des directives ( % ) via l'utilisation des arguments spécifiés. Notez la sortie de la commande suivante:
$ printf "Hello, %s" world
Hello, world
Printf a pris l'argument world et a remplacé le caractère % s dans la chaîne spécifiée par lui.
Vous remarquerez peut-être qu'après la sortie, Bash ne crée pas de nouvelle ligne pour vous. Contrairement à la commande echo, printf ne supposera pas que vous souhaitiez une nouvelle ligne après l'impression de la sortie. Ainsi, vous devrez utiliser le caractère de nouvelle ligne n dans chaque instance.
Pour imprimer une chaîne puis passer à une nouvelle ligne, tapez printf "Bonjour, le monde n" .
Hello, world
Il est important de garder à l'esprit que printf tentera de réutiliser le format pour tous vos arguments. Vous pouvez utiliser cela à votre avantage, mais si vous ne faites pas attention, vous pouvez vous retrouver avec des résultats comme celui-ci:
$ printf "My name is %s " Jordan Gloor
My name is Jordan My name is Gloor
Vous devez également savoir que si un argument est manquant, printf interprétera toutes les directives comme 0 (pour un nombre) et nul (pour une chaîne).
$ printf "Hello, %s."
Hello, .
Maintenant que vous savez comment fonctionne le script Bash avec printf sous Linux, vous êtes prêt à commencer à l'utiliser dans vos commandes.
Exemples de Linux Bash printf
Printf propose de nombreux spécificateurs de format que vous pouvez utiliser dans vos scripts. Mais aujourd'hui, nous ne couvrirons que quelques-uns des plus courants pour la fonction.
1. Formater la sortie avec une chaîne
Pour formater la sortie avec des chaînes de texte, utilisez la directive % s .
$ printf "%s is one of the largest online %s." MUO "technology publications"
MUO is one of the largest online technology publications.
2. Formater la chaîne de sortie avec des décimales
Pour mettre en forme une chaîne avec un entier, vous pouvez utiliser la directive % d pour une décimale signée.
$ printf "MUO was founded in %d." 2007
MUO was founded in 2007.
Notez que si vous souhaitez utiliser une décimale non signée dans la sortie, vous devrez utiliser la directive % u à la place.
3. Fonctions mathématiques de sortie à l'aide de printf
Le formatage des fonctions mathématiques avec la commande printf est facile. Placez simplement votre expression à l'intérieur de doubles parenthèses comme vous le faites normalement dans Bash, et spécifiez l'expression dans la liste d'arguments.
$ printf "1 + 1 is %d" $((1+1))
1 + 1 is 2
4. Mettre en forme les nombres hexadécimaux
Si vous devez formater un nombre hexadécimal, utilisez % x pour les minuscules et % X pour les majuscules.
$ printf %X 1000
3E8C
5. Imprimer la date et l'heure
Pour imprimer la date et l'heure actuelles, vous pouvez combiner printf avec la commande date et passer les directives suivantes.
$ printf "%(%m-%d-%Y %H:%M:%S)T" $(date +%s)
03-26-2021 15:27:57
Vous pouvez voir les spécificateurs de format pour le mois, le jour, l'année, l'heure, la minute et la seconde dans la sortie susmentionnée.
6. Formater les chaînes avec des caractères Unicode
Pour imprimer des caractères Unicode avec printf, utilisez l'échappement u pour Unicode 16 bits et U pour Unicode 32 bits.
Par exemple, vous pouvez imprimer le symbole de copyright avec la commande suivante:
$ printf "u00A9"
©
7. Ajouter un espacement à la sortie
Vous pouvez formater vos chaînes avec un espacement en définissant, avant le spécificateur de directive, un nombre minimal de caractères imprimés. Les caractères inutilisés seront remplis d'espaces.
Par exemple, si vous saisissez printf "% s:% 5d n" "Valeur 1" 25 "Valeur 2" 120, vous obtiendrez:
Value 1: 25
Value 2: 120
Le spécificateur de format % 5d dans la sortie indique que la chaîne formatée contiendra au moins cinq caractères. Puisque 25 n'a que deux chiffres, des espaces sont ajoutés aux caractères restants.
Si vous passez un nombre négatif comme largeur, la directive sera justifiée à gauche au lieu de justifiée à droite.
$ printf "%-10s: %d " "Circles" 25 "Boxes" 120
Circles : 25 Boxes : 120
Si vous voulez rendre la variable de largeur, vous pouvez passer un astérisque au lieu d'un nombre, et printf utilisera le prochain numéro qu'il trouvera dans la liste d'arguments.
$ printf "%*s: %d " -10 "Circles" 25 -10 "Boxes" 120
Circles : 25 Boxes : 120
Apprentissage de la commande Linux printf
Avec la commande printf dans votre ceinture d'utilitaires de script Bash, vous êtes prêt à commencer à imprimer des chaînes complexes et variées dans votre terminal. Lorsque vous développez vos scripts Bash, il est important de vous assurer que vous travaillez dans l'environnement le plus productif possible. Cela améliorera non seulement vos compétences en ligne de commande, mais améliorera également votre flux de travail en général.