Echo - Printf - Tutoriel linux

Mise à jour : Debian 10.3

Sommaire

1 - Echo

1.1 - Utilisation standard

$ echo Nous sommes le
Nous sommes le
$
$ echo -n Nous sommes le
Nous sommes le $

1.2 - Expansion de la ligne de commande

$ echo "Nous sommes le $(date)"
Nous sommes le jeu. 06 janv. 2022 22:52:51 CET
$ var="lundi"

$ echo "Nous sommes $var"
Nous sommes lundi
$ echo Apostrophes \' Guillemets \" Parenthèses \( Contreslash \\
Apostrophes ' Guillemets " Parenthèses ( Contreslash \

$ echo Espaces \ \ \ \ \ \ multiples Plus grand \> Plus petit \< Pipe \|
Espaces multiples Plus grand > Plus petit <
$ echo 'Espaces       multiples Plus grand > Plus petit < Pipe | $(date)'
Espaces multiples Plus grand > Plus petit < Pipe | $(date)
$ echo "Espaces       multiples Plus grand > Plus petit < Pipe | $(date)"
Espaces multiples Plus grand > Plus petit < Pipe | mar. 15 févr. 2022 14:00:12 CET

1.3 - Caractères dé-spécifiés - Option -e

Lorsque la commande echo est passée avec l'option -e, les caractères dans le texte après \ sont déspécifiés

\\ Contre-slash

\b Backspace - espace arrière

\c Suppression du passage à la ligne

\n Passage à la ligne

\t Tabulation horizontale

\v Tabulation verticale

\0NNN Caractère ascii dont le code octal est NNN

\xHH Caractère ascii dont le code hexa est HH

\033[code_couleur Texte en couleur
$ echo -e "Première ligne \nDeuxième ligne\nTroisième ligne"
Première ligne
Deuxième ligne
Troisième ligne
$ echo -e "Première ligne \c" ; echo "Sur la même ligne"
Première ligne Sur la même ligne
$ echo -e 'Une tabulation \tUne tabulation \tUne tabulation'
Une tabulation Une tabulation Une tabulation
$ echo -e '\0101 \0102 \0103'
A B C
$ echo -e '\x41 \x42 \x43'
A B C
Black        0;30     Dark Gray     1;30
Red          0;31     Light Red     1;31
Green        0;32     Light Green   1;32
Brown/Orange 0;33     Yellow        1;33
Blue         0;34     Light Blue    1;34
Purple       0;35     Light Purple  1;35
Cyan         0;36     Light Cyan    1;36
Light Gray   0;37     White         1;37
$ echo -e "Ceci_sans_couleur \033[0;31m Ceci en rouge \
\033[0;32m Ceci en vert \033[0m Ceci_sans_couleur"
$ Red='\033[0;31m'; Green='\033[0;32m'; Nocolor='\033[0m'

$ echo -e "Ceci_sans_couleur ${Red}Ceci en rouge ${Green}Ceci en vert ${Nocolor}Ceci_sans_couleur"
Ceci_sans_couleur Ceci en rouge Ceci en vert Ceci_sans_couleur

1.3 - Redirections

$ echo "Nouveau fichier>démo.txt

$ cat démo.txt
Nouveau fichier
$ echo "Ajout >> démo.txt

$ cat démo.txt
Nouveau fichier
Ajout

2 - printf

2.1 - Introduction

$ type printf
printf est une primitive du shell
$ printf --help
$ man printf

2.2 - Commandes de base

$ printf "Un deux trois quatre"
Un deux trois quatre$

Noter que par défaut printf n'ajoute pas de passage à la ligne

$ printf -v line "Un deux trois quatre"

$ printf "$line"
Un deux trois quatre

2.3 - Prise en compte de séquences d'échappement

$ printf "Un deux trois quatre\n"
Un deux trois quatre
$
$ printf "Un\tdeux\ttrois\tquatre\n"
Un deux trois quatre
$

2.4 - Formatage avec une variable

$ printf "Un deux %s quatre" trois
Un deux trois quatre
$ printf "1 2 %d 4" 3
1 2 3 4$
$ printf "1024 en hexa %X \n" 1024
1024 en hexa 400

2.5 - Formatages avec plusieurs variables

$ printf "Exemple de réutilisation %s\n" pomme banane cerise
Exemple de réutilisation pomme
Exemple de réutilisation banane
Exemple de réutilisation cerise
$ printf "%s en décimal :%d en hexadécimal :%X\n" "Mille vingt-quatre" "1024" "1024"
Mille vingt-quatre en décimal :1024 en hexadécimal :400
$ printf "%s est un %s\n" Haricot Légume Banane Fruit Pomme Fruit
Haricot est un Légume
Banane est un Fruit
Pomme est un Fruit

2.6 - echo versus printf

$ echo "-e \ntest"

test

$ printf "%s\n " -e \ntest"
-e \ntest
$ while IFS="" read -r line;do printf "%s\n" "$line";done </etc/fstab