Commande printf sous Linux

Linux 命令大全Référence complète des commandes Linux


1. Aperçu de la commande printf

printf est une puissante commande de sortie formatée dans les systèmes Linux/Unix, dérivée de la fonction printf() du langage C. Par rapport à la commande echo, printf offre un contrôle de sortie et des capacités de formatage plus précis.

Caractéristiques clés

  • Formatage précis: Contrôle l'alignement de la sortie, la largeur, la précision, etc.
  • Pas de saut de ligne automatique: N'ajoute pas de saut de ligne à la fin de la sortie par défaut (contrairement à echo)
  • Prise en charge multilingue: Prend en charge la sortie de caractères Unicode
  • Insertion de variables: Peut insérer des valeurs de variables dans des chaînes de caractères

2. Syntaxe de base

printf format-string [arguments...]

Description du paramètre

  • format-string: Chaîne de format, contenant des caractères ordinaires et des spécificateurs de format
  • arguments: Liste d'arguments correspondant aux spécificateurs de format

3. Explication détaillée des spécificateurs de format

Les spécificateurs de format commencent par%; la forme de base est :

%[flags][width][.precision]specifier

Spécificateurs de format courants

Spécificateur Description Exemple
%s String printf "%s" "hello"
%d Entier décimal printf "%d" 123
%f Nombre à virgule flottante printf "%f" 3.14
%x Entier hexadécimal (minuscules) printf "%x" 255
%X Entier hexadécimal (majuscules) printf "%X" 255
%o Entier octal printf "%o" 8
%c Caractère unique printf "%c" 65

Options de modificateur

1. Drapeaux

Option Description Exemple
- Aligner à gauche printf "%-10s" "hi"
+ Afficher le signe plus/moins printf "%+d" 123
0 Remplir avec des zéros printf "%05d" 12
Espace Laisser un espace avant les nombres positifs printf "% d" 123
# Format spécial (par exemple, préfixe 0x) printf "%#x" 255

2. Largeur

Spécifie la largeur minimale du champ, effectue un remplissage si la largeur est insuffisante

Exemple

printf "%10s\n" "hello"  # Aligné à droite, largeur 10
printf "%-10s\n" "hello" # Aligné à gauche, largeur 10

3. Précision (.precision)

Pour les nombres à virgule flottante, spécifie le nombre de chiffres après la virgule décimale ; pour les chaînes, spécifie le nombre maximal de caractères

Exemple

printf "%.2f\n" 3.14159  # Sortie 3.14
printf "%.5s\n" "abcdefg" # Sortie abcde

4. Exemples pratiques

Exemple 1 : Sortie formatée de base

Exemple

printf "Nom : %s, Âge : %d, Taille : %.2f\n" "Alice" 25 1.68

Sortie :

Name: Alice, Age: 25, Height: 1.68

Exemple 2 : Sortie alignée en tableau

Exemple

printf "%-10s %-10s %-10s\n" "Nom" "Âge" "Score"
printf "%-10s %-10d %-10.2f\n" "Alice" 25 89.5
printf "%-10s %-10d %-10.2f\n" "Bob" 23 92.3

Sortie :

Name       Age        Score     
Alice      25         89.50     
Bob        23         92.30     

Exemple 3 : Gestion des caractères spéciaux

Exemple

printf "Température : %d°C\n" 25
printf "Chemin : %s\n" "/home/user"
printf "Alerte : \a\n"  # Caractère de sonnerie

Exemple 4 : Insertion de variable

Exemple

name="John"
age=30
printf "Utilisateur : %s, %d ans\n" "$name" "$age"

5. Utilisation avancée

1. Formatage de la sortie de date

Exemple

printf "Aujourd'hui, nous sommes le %(%Y-%m-%d)T\n" -1

2. Sortie couleur

Exemple

printf "\e[31mTexte rouge\e[0m\n"
printf "\e[32mTexte vert\e[0m\n"

3. Spécification dynamique de la largeur

Exemple

width=20
printf "%*s\n" $width "Aligné à droite"

6. Problèmes courants et considérations

Problème de saut de ligne: printf n'ajoute pas de saut de ligne par défaut ; il faut l'ajouter manuellement\n

Exemple

printf "Pas de saut de ligne"
printf "Ajouter un saut de ligne\n"

Incohérence du nombre d'arguments: Lorsqu'il y a moins d'arguments que de spécificateurs de format, des valeurs indéfinies seront affichées

Exemple

printf "%s %s\n" "only_one"  # Le deuxième %s affichera une sortie vide

Gestion des guillemets: Il est recommandé d'entourer la chaîne de format de guillemets doubles, et d'utiliser également des guillemets doubles pour les variables

Exemple

printf "%s\n" "$variable"

Échappement des caractères spéciaux: Les caractères spéciaux doivent être échappés avec des barres obliques inverses dans la chaîne de format


7. printf vs echo

Fonctionnalité printf echo
Nouvelle ligne Il faut ajouter explicitement \n Ajouté automatiquement
Formatage Prend en charge le formatage complexe Sortie simple
Cohérence Comportement cohérent entre les systèmes Peut varier selon les systèmes
Expansion des variables Doit être explicitement spécifié Expansion automatique
Caractères spéciaux Nécessite un échappement Certaines versions prennent en charge l'option -e

Linux 命令大全Référence complète des commandes Linux

Autres extensions