stderr (erreur standard)
100%

Text-Fu · Leçon 3

stderr (erreur standard)

Apprenez à rediriger l'erreur standard séparément ou à la réunir avec la sortie standard dans Bash.

Les programmes écrivent normalement leurs résultats sur la sortie standard et leurs diagnostics sur un flux séparé nommé erreur standard, ou stderr. Cette séparation permet d'enregistrer les données utiles sans y mêler les erreurs.

Séparer la sortie ordinaire des erreurs

$ ls /fake/directory > peanuts.txt
ls: cannot access '/fake/directory': No such file or directory

> ne redirige que stdout. Le diagnostic va sur stderr, toujours relié au terminal. Le shell crée ou tronque néanmoins peanuts.txt pour stdout.

Les descripteurs standard sont 0 pour stdin, 1 pour stdout et 2 pour stderr.

Pourquoi l'erreur de ls /missing > results.txt reste-t-elle normalement au terminal ?

Rediriger stderr avec 2>

Placez le descripteur 2 devant > :

$ ls /fake/directory 2> errors.txt

Le shell crée ou tronque errors.txt et le relie au descripteur 2. Stdout reste inchangé. Utilisez 2>> pour ajouter les erreurs.

Quelle commande remplace errors.log par les diagnostics de find /restricted tout en laissant stdout inchangé ?

Réunir stdout et stderr

Redirigez d'abord stdout, puis dupliquez stderr vers sa destination actuelle :

$ ls /fake/directory /etc/passwd > combined.txt 2>&1

Les redirections sont traitées de gauche à droite : stdout va d'abord dans le fichier, puis stderr rejoint cette destination. Dans l'ordre inverse :

$ ls /fake/directory /etc/passwd 2>&1 > regular.txt

stderr copie d'abord l'ancienne destination de stdout, le terminal, puis seul stdout va dans regular.txt.

Quelle redirection Bash envoie stdout et stderr de command vers all.log ?

Bash propose aussi &> pour remplacer un fichier avec les deux flux et &>> pour les ajouter.

$ ls /fake/directory /etc/passwd &> combined.txt

Quelle commande Bash ajoute stdout et stderr de build à build.log ?

Écarter volontairement un flux

/dev/null est un périphérique spécial qui jette les données reçues :

$ ls /fake/directory 2> /dev/null

Cela ne rend pas la commande réussie et ne change pas son code de sortie ; seul le diagnostic est masqué. Pendant un dépannage, conservez stderr plutôt que de perdre l'information utile.

Que change check-data 2> /dev/null ?

Leçon terminée

Vous avez terminé stderr (erreur standard)

Vous savez désormais séparer les diagnostics ou les réunir avec la sortie ordinaire.

  • Reconnaître stderr comme le descripteur 2.

  • Remplacer ou compléter un journal avec 2> ou 2>>.

  • Appliquer les redirections de gauche à droite.

  • Réunir les deux sorties avec une syntaxe choisie.

  • Ne jeter les diagnostics que lorsque leur perte est acceptable.

Conservez votre progression

Créez un compte gratuit pour enregistrer cette leçon et continuer sur n'importe quel appareil.

Créer un compte gratuit
Leçon Suivante
Retour à Text-Fu