Objectif : Comprendre le fonctionnement des flux standard (entrée, sortie, erreur) et savoir les rediriger pour automatiser les traitements.
Sous Linux, chaque programme échange des données via des flux :
[clavier] -> stdin -> [programme] -> stdout -> [écran] -> stderr -> [écran]
> : redirige la sortie vers un fichier (écrase le contenu existant)
>
echo "Bonjour" > message.txt
>> : ajoute à la fin d’un fichier sans l’écraser
>>
echo "Encore un message" >> message.txt
< : lit les données à partir d’un fichier au lieu du clavier
<
sort < noms.txt
Cela permet d’automatiser des commandes qui attendent des données saisies à la main.
2> : redirige les erreurs vers un fichier
2>
ls /dossier/inexistant 2> erreurs.log
2>&1 : fusionne la sortie standard et les erreurs dans le même fichier
2>&1
commande > tout.log 2>&1
Le pipe (|) envoie la sortie d’une commande dans l’entrée d’une autre :
|
cat fichier.txt | grep "mot" | sort
[cat] → [grep] → [sort] → [écran]
On redirige les erreurs et on filtre les résultats :
find /etc -type f 2>/dev/null | grep "hosts"
Explication :
find
2>/dev/null
grep
Afficher et enregistrer la sortie en même temps :
ls | tee fichiers.txt
[ls] → [tee] → (écran + fichiers.txt)
tee