Sous Linux, chaque commande produit du texte en sortie, et ce texte peut être envoyé ailleurs que l'écran. Vers un fichier, vers une autre commande, ou même vers le néant (/dev/null). Ce mécanisme s'appelle la redirection et c'est l'un des concepts les plus puissants du shell. Combiné avec le pipe (|), il permet d'enchaîner des commandes simples pour accomplir des tâches complexes.
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »- Rediriger la sortie d'une commande vers un fichier avec
>et>> - Distinguer sortie standard et sortie d'erreur
- Enchaîner des commandes avec le pipe
| - Masquer les erreurs avec
/dev/null - Afficher et enregistrer en même temps avec
tee
Les trois flux du shell
Section intitulée « Les trois flux du shell »Avant de rediriger quoi que ce soit, il faut comprendre que chaque commande utilise trois flux :
| Flux | Numéro | Nom | Rôle |
|---|---|---|---|
| Entrée standard | 0 | stdin | Ce que la commande lit (clavier par défaut) |
| Sortie standard | 1 | stdout | Le résultat normal (écran par défaut) |
| Sortie d'erreur | 2 | stderr | Les messages d'erreur (écran par défaut) |
Par défaut, stdout et stderr arrivent toutes les deux à l'écran. Les redirections permettent de les envoyer ailleurs.
Rediriger la sortie vers un fichier
Section intitulée « Rediriger la sortie vers un fichier »>, écrire (en écrasant)
Section intitulée « >, écrire (en écrasant) »L'opérateur > envoie la sortie standard dans un fichier. Si le fichier existe, il est écrasé :
ls /etc > liste.txtLe fichier liste.txt contient maintenant la liste des fichiers de /etc. Rien ne s'affiche à l'écran.
Vérifiez :
head -n 5 liste.txt>>, ajouter à la fin
Section intitulée « >>, ajouter à la fin »L'opérateur >> ajoute à la fin du fichier sans écraser le contenu existant :
echo "--- Fin du rapport ---" >> liste.txtCréer un fichier à partir de rien
Section intitulée « Créer un fichier à partir de rien »Rediriger echo est un moyen simple de créer un petit fichier :
echo "nameserver 1.1.1.1" > /tmp/resolv-test.confRediriger les erreurs
Section intitulée « Rediriger les erreurs »2>, rediriger stderr
Section intitulée « 2>, rediriger stderr »Pour envoyer les messages d'erreur dans un fichier séparé :
find /etc -name "*.conf" 2> erreurs.logLes résultats normaux s'affichent à l'écran. Les erreurs « Permission denied » vont dans erreurs.log.
2>/dev/null, ignorer les erreurs
Section intitulée « 2>/dev/null, ignorer les erreurs »/dev/null est un fichier spécial qui avale tout ce qu'on lui envoie. C'est le « trou noir » de Linux :
find / -name "sshd_config" 2>/dev/nullLes erreurs « Permission denied » disparaissent, seuls les résultats utiles s'affichent.
Rediriger stdout et stderr ensemble
Section intitulée « Rediriger stdout et stderr ensemble »Pour envoyer tout (résultat + erreurs) dans un même fichier :
find / -name "*.log" > tout.log 2>&12>&1 signifie « envoie le flux 2 (stderr) là où va le flux 1 (stdout) ».
Le pipe |, enchaîner des commandes
Section intitulée « Le pipe |, enchaîner des commandes »Le pipe (|) connecte la sortie d'une commande à l'entrée de la suivante. C'est la base de la philosophie Unix : des outils simples combinés entre eux.
Exemple de base
Section intitulée « Exemple de base »ls /etc | head -n 5ls liste les fichiers, le pipe envoie cette liste à head qui n'affiche que les 5 premières lignes.
Enchaîner plusieurs pipes
Section intitulée « Enchaîner plusieurs pipes »cat /etc/passwd | cut -d: -f1 | sortcat /etc/passwd, affiche le fichiercut -d: -f1, extrait le premier champ (le nom d'utilisateur) en utilisant:comme séparateursort, trie par ordre alphabétique
Le résultat : la liste triée de tous les utilisateurs du système.
Compter des résultats
Section intitulée « Compter des résultats »ls /etc | wc -lwc -l compte le nombre de lignes. Ici, le nombre de fichiers et répertoires dans /etc.
Filtrer avec grep
Section intitulée « Filtrer avec grep »ps aux | grep "sshd"ps aux liste tous les processus, grep ne garde que ceux contenant « sshd ».
tee, afficher et enregistrer en même temps
Section intitulée « tee, afficher et enregistrer en même temps »Par défaut, une redirection > envoie tout dans le fichier et rien à l'écran. Si vous voulez les deux :
ls /etc | tee liste.txtLe résultat s'affiche à l'écran et est enregistré dans liste.txt.
Pour ajouter au fichier au lieu d'écraser :
ls /var | tee -a liste.txtRécapitulatif
Section intitulée « Récapitulatif »| Opérateur | Rôle | Exemple |
|---|---|---|
> | Redirige stdout vers un fichier (écrase) | ls > fichier.txt |
>> | Redirige stdout vers un fichier (ajoute) | echo "fin" >> fichier.txt |
2> | Redirige stderr vers un fichier | find / -name x 2> err.log |
2>/dev/null | Ignore les erreurs | find / -name x 2>/dev/null |
> f 2>&1 | Redirige stdout + stderr | cmd > tout.log 2>&1 |
| | Pipe : sortie d'une commande → entrée de la suivante | ls | head |
tee | Affiche et enregistre en même temps | ls | tee fichier.txt |
Dépannage
Section intitulée « Dépannage »| Problème | Cause probable | Solution |
|---|---|---|
> a écrasé mon fichier | > écrase toujours | Utiliser >> pour ajouter |
| Le pipe ne donne rien | La première commande ne produit pas de sortie | Tester la première commande seule |
Permission denied avec > | Pas le droit d'écrire dans le répertoire | Écrire dans /tmp ou utiliser sudo |
| Les erreurs polluent le résultat | stdout et stderr mélangés à l'écran | Ajouter 2>/dev/null |
tee : commande introuvable | Très rare, paquet coreutils manquant | sudo apt install coreutils |
Mettre en pratique
Section intitulée « Mettre en pratique »La différence entre > et 2> ne devient un réflexe qu'une fois qu'on a produit soi-même les fichiers attendus. Ce lab vous demande de séparer stdout et stderr, de les fusionner quand c'est utile, puis d'enchaîner des commandes au pipe pour fabriquer des artefacts exacts, contrôlés à l'octet près.
Contrôle de connaissances
Section intitulée « Contrôle de connaissances »Vérifiez que l'essentiel de ce guide est acquis. Les questions portent uniquement sur ce qui vient d'être expliqué ici.
Contrôle de connaissances
Validez vos connaissances avec ce quiz interactif
Informations
- Le chronomètre démarre au clic sur Démarrer
- Questions à choix multiples, vrai/faux et réponses courtes
- Vous pouvez naviguer entre les questions
- Les résultats détaillés sont affichés à la fin
Lance le quiz et démarre le chronomètre
Vérification
(0/0)Profil de compétences
Quoi faire maintenant
Ressources pour progresser
Des indices pour retenter votre chance ?
Nouveau quiz complet avec des questions aléatoires
Retravailler uniquement les questions ratées
Retour à la liste des certifications
À retenir
Section intitulée « À retenir »>écrase,>>ajoute, c'est la différence la plus importante.|(pipe) est le ciment de la ligne de commande : il connecte les outils entre eux.2>/dev/nullsupprime les erreurs, indispensable avecfindlancé sanssudo.teeest le compromis : afficher à l'écran et garder une trace dans un fichier.