Question 1Quel symbole ajoute une nouvelle ligne à la fin tout en conservant le contenu existant du fichier ?
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.
> efface le contenu et écrase ; >> ajoute à la fin.| Symbole | Signification |
|---|---|
> | É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
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.
< 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
> 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.
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 >.
| Forme | Signification |
|---|---|
> out 2> err | Route la sortie standard vers out et les erreurs vers err séparément |
2>&1 | Envoie 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
Vérification des connaissances
Répondez à chaque question une par une.
Question 2Que fait < pour une commande ?
Question 3Que se passe-t-il quand tu lances cat missing.txt 2> err.txt ?