Présentation
Le bash printf
La commande est un outil utilisé pour créer une sortie formatée. C'est un shell intégré, similaire à printf()
fonction en C/C++, Java, PHP et autres langages de programmation. La commande vous permet d'imprimer du texte formaté et des variables dans la sortie standard.
Utilisez printf
dans les scripts bash pour augmenter l'efficacité et la réutilisabilité lors de la programmation.
Dans ce didacticiel, vous apprendrez à utiliser le printf
commande sous Linux pour imprimer des variables et formater la sortie.
Prérequis
- Une machine exécutant Linux
- Accès à un terminal (Ctrl + Alt + T )
Syntaxe bash printf
Le printf
La commande accepte la syntaxe suivante :
printf [-v var] [format specifiers] [arguments]
[-v var]
Le -v
facultatif flag attribue la sortie au [var]
variable au lieu de l'imprimer dans la sortie standard.
[format specifiers]
Les spécificateurs de format sont des chaînes qui déterminent les méthodes de formatage des spécificateurs. La section suivante comprend une liste des spécificateurs acceptés.
[arguments]
Les arguments peuvent être n'importe quelle valeur ou variable, et les [format specifiers]
pointez sur [arguments]
. S'il y a plus d'arguments que de spécificateurs de format, la chaîne de format est réutilisée jusqu'à ce qu'elle interprète le dernier argument.
S'il y a moins de spécificateurs de format que d'arguments, les formats numériques sont mis à zéro (0
), tandis que les formats de chaîne sont définis sur null
(vide).
Spécificateurs printf
Le tableau suivant montre les printf
communs spécificateurs de format et leurs descriptions :
Spécificateur de format | Description |
---|---|
%c | Traitez les arguments comme un seul caractère. |
%d | Traiter l'entrée comme un nombre décimal (entier) (base 10). |
%e | Traite l'entrée comme un nombre exponentiel à virgule flottante. |
%f | Traiter l'entrée comme un nombre à virgule flottante. |
%i | Traiter l'entrée comme un nombre entier (base 10). |
%o | Traite l'entrée comme un nombre octal (base 8). |
%s | Traitez l'entrée comme une chaîne de caractères. |
%u | Traiter l'entrée comme un nombre décimal (entier) non signé. |
%x | Traite l'entrée comme un nombre hexadécimal (base 16). |
%% | Imprimez un signe de pourcentage. |
%Wd | Imprimez le W entier X chiffres larges. |
%(format)T | Sortie une chaîne date-heure résultant de l'utilisation de format comme chaîne de format pour strftime . L'argument correspondant peut être le nombre de secondes depuis Epoch (1er janvier 1970, 00:00), -1 (l'heure actuelle), ou -2 (heure de démarrage du shell). Ne pas spécifier d'argument utilise l'heure actuelle comme valeur par défaut. |
\% | Imprimez un signe de pourcentage. |
\n | Imprime un newline caractère. |
\t | Imprimer un tab caractère. |
Certains spécificateurs de format acceptent des modificateurs de format qui modifient leurs actions. Saisissez les modificateurs entre les %
caractère et le caractère qui spécifie le format.
Les modificateurs de format disponibles sont :
<N>
. Entrez un nombre qui spécifie une largeur de champ minimale. Si le texte de sortie est plus court, il est rempli d'espaces. Si le texte est plus long, le champ se développe..
(point) . Lorsqu'il est utilisé avec un modificateur de largeur de champ, le champ ne s'agrandit pas pour un texte plus long. Au lieu de cela, le texte est tronqué.-
. Aligne à gauche le texte imprimé. L'alignement par défaut est à droite.0
. Complète les chiffres avec des zéros au lieu d'espaces.<space>
. Complète un nombre positif avec un espace et un nombre négatif avec un signe moins (-
).+
. Imprime tous les nombres signés (+
pour positif,-
pour négatif).'
. Pour les conversions décimales, applique le séparateur de regroupement des milliers à la partie entière de la sortie en fonction du LC_NUMERIC actuel fichier.
Exemples d'impression bash
Les exemples ci-dessous illustrent des cas d'utilisation courants et différentes manières de formater la sortie à l'aide de printf
.
Bien que la commande puisse imprimer des variables dans le terminal, il est plus avantageux de l'utiliser dans des scripts bash car elles permettent la réutilisation du code et facilitent l'automatisation.
Séparer la sortie avec un caractère de saut de ligne
Contrairement à echo
, en utilisant printf
pour imprimer une chaîne ou une variable sans aucun spécificateur de format affiche le texte non formaté sur une seule ligne. Pour ajouter un caractère de saut de ligne et séparer les entrées, spécifiez le \n
spécificateur de format :
Un caractère de saut de ligne sépare maintenant la sortie imprimée.
Imprimer plusieurs variables
Utilisez printf
pour imprimer plusieurs variables dans la sortie standard. Suivez les étapes ci-dessous :
1. Ouvrez le terminal (Ctrl + Alt + T ) et créez un script bash à l'aide d'un éditeur de texte tel que vi/vim :
vi script.sh
2. Saisissez les lignes suivantes :
#!/bin/bash
printf "Enter your name:\n"
read name
printf "Enter your surname:\n"
read surname
printf 'Welcome: %s\n' "$name $surname"
Le %s
dans la chaîne de format pointe vers les variables définies dans les lignes précédentes, tandis que \n
ordonne à printf
pour ajouter un caractère de saut de ligne.
3. Enregistrez le script et quittez vi
en saisissant :
:wq
4. Exécutez le script :
bash script.sh
5. Saisissez les valeurs demandées pour les deux variables et vérifiez le résultat :
Le printf
La commande stocke l'entrée dans les deux variables, puis imprime les variables dans la sortie standard.
Imprimer une variable dans une table fictive
Ajoutez automatiquement un rembourrage dynamique ou modifiez l'alignement de la sortie variable à l'aide de printf
. Suivez les étapes ci-dessous pour imprimer une variable dans un tableau fictif :
1. Créez un fichier de script :
vi table.sh
2. Saisissez les lignes suivantes et enregistrez le script :
#!/bin/bash
var='hello'
printf '|%10s|\n' "$var"
Le %10
garantit qu'il y a dix caractères dans les symboles de pipe, remplissant la sortie variable avec des caractères d'espacement jusqu'à cette longueur. Les s
traite la variable d'entrée comme une chaîne.
3. Exécutez le script et vérifiez le résultat :
bash table.sh
La commande génère la variable entourée de symboles de canalisation et l'aligne à droite par défaut. Pour aligner la sortie sur le côté gauche, ajoutez le -
modificateur après le %
caractère dans la chaîne de format :
#!/bin/bash
var='hello'
printf '|%-10s|\n' "$var"
Ajouter des décimales
Utilisez printf
avec le %f
spécificateur de format pour traiter l'entrée comme un nombre à virgule flottante et ajouter la précision de deux décimales. Suivez les étapes ci-dessous :
1. Créez un script bash :
vi precision.sh
2. Saisissez les lignes suivantes et enregistrez le script :
#!/bin/bash
printf "Enter a decimal number:\n"
read number
printf "%5.2f\n" "$number"
3. Exécutez le script :
bash precision.sh
La sortie imprime la variable sous la forme d'un nombre à virgule flottante arrondi à deux décimales.
Stocker des données dans une variable
Utilisez le -v
drapeau avec printf
pour assigner une variable shell pour stocker les données au lieu de les imprimer dans la sortie standard.
Suivez les étapes ci-dessous :
1. Créez un script bash :
vi variable.sh
2. Saisissez les lignes suivantes et enregistrez le script :
#!/bin/bash
printf -v var 'Welcome'
printf '%s\n' "$var"
3. Exécutez le script :
bash variable.sh
La sortie imprime le contenu de la variable stockée.
Convertir des nombres hexadécimaux
Le %d
le spécificateur de format indique printf
pour traiter l'entrée comme un nombre décimal (entier). Utilisez le spécificateur pour créer un script qui convertit les nombres hexadécimaux en nombres décimaux.
Suivez les étapes ci-dessous :
1. Créez un script bash :
vi convert.sh
2. Saisissez les lignes suivantes et enregistrez le script :
#!/bin/bash
printf 'Enter a hexadecimal number:\n'
read number
printf "%d\n" "$number"
3. Exécutez le script :
bash convert.sh
Le script convertit le nombre hexadécimal d'entrée en nombre décimal.
Convertir les nombres décimaux en octaux
Utilisez le %o
spécificateur de format pour convertir les nombres décimaux en nombres octaux. Suivez les étapes ci-dessous :
1. Créez un script :
vi octal.sh
2. Saisissez les lignes suivantes et enregistrez le script :
#!/bin/bash
printf "Enter a decimal number:\n"
read number
printf "The octal number of "$number" is %o\n" "$number"
3. Exécutez le script :
bash octal.sh
Le script convertit la valeur décimale saisie en valeur octale.
Imprimer la date
Créez un script qui utilise printf
pour afficher la date actuelle. Suivez les étapes ci-dessous :
1. Créez un script :
vi datetime.sh
2. Saisissez les lignes suivantes et enregistrez le script :
#!/bin/bash
printf 'Today is %(%F)T\n' -1
Le %F
traite l'entrée comme un nombre à virgule flottante, tandis que -1
indique la date actuelle.
3. Exécutez le script pour vérifier s'il fonctionne :
bash datetime.sh
La sortie indique la date et l'heure actuelles.
Ajouter des virgules aux milliers
Lorsque vous traitez avec des nombres, utilisez le '
modificateur pour rendre la sortie plus lisible en ajoutant des virgules pour indiquer des milliers. Suivez les étapes ci-dessous :
1. Créez un script bash :
vi decimals.sh
2. Saisissez les lignes suivantes :
#!/bin/bash
printf "Enter a number:\n"
read number
printf "%'d\n" $number
3. Exécutez le script :
bash decimals.sh
Après avoir entré un nombre, le script utilise printf
pour ajouter automatiquement les virgules à la valeur d'entrée.
Obtenir le code ASCII du caractère
Créez un script qui utilise printf
pour afficher l'ASCII d'un caractère d'entrée valeur. Suivez les étapes ci-dessous :
1. Créez un script :
vi character.sh
2. Saisissez les lignes suivantes puis enregistrez le script :
#!/bin/bash
printf "Enter a character to get character code:\n"
read character
printf "%d\n" "'$character"
3. Exécutez le script et testez s'il fonctionne :
bash character.sh
Le script affiche la valeur ASCII du caractère d'entrée.