Apprenez en lisant dans l'ordre

Redirection — > >> < 2>

Écrase un fichier avec >, ajoute à la fin avec >>, alimente l'entrée standard avec <, et envoie uniquement les erreurs dans un fichier séparé avec 2> — tout en pratique dans un terminal en navigateur.

Envoyer la sortie vers un fichier — > et >>

Le résultat d'une commande s'affiche normalement à l'écran, mais la redirection bascule cette sortie vers un fichier.

Écris commande > fichier et ce qui aurait été affiché à l'écran est écrit dans le fichier à la place.

> vide le fichier avant d'écrire (écrasement).

Quand tu veux garder ce qui s'y trouve déjà et ajouter à la fin, utilise >> (ajout).

Les confondre peut effacer des données importantes, donc gardons la différence bien en tête.

> écrase, >> ajoute
echo A > out.txtout.txt contenu: Aecho B > out.txtout.txt: B (A est effacé)echo C >> out.txtout.txt: B / C
> efface le contenu et écrase ; >> ajoute à la fin.
SymboleSignification
>Écrit la sortie standard dans un fichier (le vide d'abord, écrasement)
>>Ajoute la sortie standard à la fin d'un fichier
<Alimente une commande avec le contenu d'un fichier en entrée standard
1>Écrit uniquement la sortie standard dans un fichier (identique à >)
2>Écrit uniquement la sortie d'erreur dans un fichier séparé
echo 'line 1' > out.txt    # écrasement (nouvelle création)
echo 'line 2' >> out.txt   # ajout
cat out.txt                # line 1 et line 2
echo 'reset' > out.txt     # écrasement (le contenu précédent est effacé)
cat out.txt                # juste reset

① Écris la sortie de echo 'first' dans note.txt avec >.

② Ajoute une ligne second au même note.txt avec >>, et confirme qu'il y a 2 lignes avec cat note.txt.

③ Enfin écris reset dans note.txt avec >, et confirme avec cat note.txt que le contenu devient juste reset. (Lance-le correctement et une explication apparaîtra.)

Linux console
0 / 4 exécutée(s)
Loading Linux Terminal...

Entrée et routage des erreurs — < et 2>

< est l'opposé de la sortie : il alimente la commande avec le contenu d'un fichier en entrée standard.

Écris commande < fichier et, au lieu de taper au clavier, le contenu du fichier est envoyé dans la commande.

Contrairement à wc -l nums.txt, avec < nums.txt le nom du fichier n'est pas ajouté à la sortie — seul le contenu est transmis.

La sortie d'une commande se présente sous deux formes : les résultats normaux (sortie standard) et les messages d'erreur (sortie d'erreur standard).

La sortie standard porte le numéro 1 et la sortie d'erreur le numéro 2 ; tu routes la sortie standard avec 1> (identique à >) et la sortie d'erreur avec 2>.

Avec 2> tu peux envoyer uniquement les erreurs dans un fichier séparé, ce qui est utile quand tu veux enregistrer les résultats et les erreurs séparément.

< pour l'entrée, 1> et 2> pour router la sortie
wc -l < data.txtdata.txt en entréels f 1> out.txtsortie standard (1)uniquement → out.txtcat miss 2> err.txtsortie d'erreur (2)uniquement → err.txt
< alimente un fichier en entrée ; 1> envoie uniquement la sortie standard et 2> uniquement la sortie d'erreur dans un fichier séparé.
printf 'x\ny\nz\n' > nums.txt   # un fichier de 3 lignes
wc -l < nums.txt                # alimente nums.txt en entrée → 3
cat missing.txt 2> err.txt      # route l'erreur vers err.txt
cat err.txt                     # vérifie le message d'erreur

① Crée un fichier de 3 lignes avec printf 'x\ny\nz\n' > nums.txt.

② Alimente nums.txt en entrée standard de wc avec son option de comptage de lignes via <, et confirme que le nombre de lignes s'affiche.

③ Essaie d'ouvrir un fichier inexistant avec cat, et route ce message d'erreur vers err.txt avec 2>.

④ Confirme avec cat err.txt que le message d'erreur a bien été enregistré dans le fichier.

Linux console
0 / 4 exécutée(s)
Loading Linux Terminal...

> efface le fichier sur-le-champ

> vide le contenu du fichier avant l'exécution de la commande.

Quand tu veux ajouter des lignes au contenu existant, utilise toujours >> (ajout).

De même, 2> écrase le fichier cible avec la sortie d'erreur.

Combiner — construire un log et le compter

En pratique, on commence souvent un enregistrement avec >, on continue d'ajouter des lignes avec >>, et on vérifie enfin le compte avec wc.

Combinons les symboles vus jusqu'ici pour pratiquer la création simple de logs et leur comptage.

① Commence un enregistrement en écrivant une ligne hit dans access.log avec la sortie de echo via >.

② Ajoute hit deux fois de plus au même access.log avec >>, et confirme qu'il y a 3 lignes avec cat access.log.

③ Alimente access.log dans wc avec son option de comptage de lignes via <, et affiche combien d'enregistrements se sont accumulés.

Linux console
0 / 4 exécutée(s)
Loading Linux Terminal...

Combiner plusieurs redirections — > 2> 2>&1

Tu peux spécifier plusieurs redirections sur une seule commande à la fois.

Pour séparer la sortie standard et la sortie d'erreur dans des fichiers distincts, aligne-les comme > destination 2> destination-erreur.

Pour fusionner les deux dans un seul fichier, utilise 2>&1 pour envoyer la sortie d'erreur (2) vers la même destination que la sortie standard (1).

2>&1 se place après avoir défini la destination avec >.

FormeSignification
> out 2> errRoute la sortie standard vers out et les erreurs vers err séparément
2>&1Envoie la sortie d'erreur (2) vers la même destination que la sortie standard (1)
> all 2>&1Écrit la sortie standard et les erreurs ensemble dans all
touch real.txt                                  # prépare un vrai fichier
ls real.txt missing.txt > out.txt 2> err.txt    # sortie et erreurs séparément
cat out.txt                                     # real.txt (sortie standard)
cat err.txt                                     # erreur pour missing.txt
ls real.txt missing.txt > all.txt 2>&1          # les deux dans un seul fichier
cat all.txt                                     # sortie et erreurs ensemble

① Prépare un vrai fichier avec touch real.txt.

② Lance ls real.txt missing.txt > out.txt 2> err.txt pour router la sortie standard vers out.txt et les erreurs vers err.txt séparément.

③ Vérifie le contenu de chacun avec cat out.txt et cat err.txt.

④ Ensuite lance ls real.txt missing.txt > all.txt 2>&1 et confirme avec cat all.txt que la sortie standard et les erreurs sont fusionnées dans le même fichier.

Linux console
0 / 6 exécutée(s)
Loading Linux Terminal...
QUIZ

Vérification des connaissances

Répondez à chaque question une par une.

Question 1Quel symbole ajoute une nouvelle ligne à la fin tout en conservant le contenu existant du fichier ?

Question 2Que fait < pour une commande ?

Question 3Que se passe-t-il quand tu lances cat missing.txt 2> err.txt ?