Comment rediriger stderr vers stdout dans Bash

How Redirect Stderr Stdout Bash



Les commandes sous Linux prennent une entrée de l'utilisateur, qui peut être un fichier ou n'importe quel attribut, et lors de l'exécution, elles donnent une sortie appelée sortie standard. La sortie standard peut être une sortie réussie ou une sortie d'erreur ; les deux seront affichés sur l'écran de votre terminal. Mais dans certains cas, vous souhaitez stocker les sorties standard dans un fichier pour tester ou déboguer le code. Sous Linux, ces sorties peuvent être redirigées vers un fichier et le processus de capture est appelé redirection.







Chaque processus sous Linux produit trois flux de données, stdin, stdout et stderr :



  • standard : Prend l'entrée de l'utilisateur via le clavier
  • sortie standard : Affiche la sortie sur l'écran
  • stderr : Affiche les informations d'erreur à l'écran

Chaque flux de données a un identifiant numérique :



Identifiant numérique Nom
0 standard
1 sortie standard
2 stderr

Expliquons un peu plus la redirection en détail :





Comment rediriger la sortie standard et l'erreur standard dans Bash :

Pour rediriger la sortie standard de la commande, nous utiliserons 1 avec un opérateur de redirection supérieur au signe > :

$ls 1>stdout.txt

La commande ci-dessus créera un fichier et placera la sortie standard de la commande ls dans le fichier stdout.txt.



Pour lire le fichier stdout.txt, utilisez :

$chatstdout.txt

Nous pouvons également rediriger l'erreur standard vers un fichier en utilisant la commande :

$chatmonfichier.txt2>stderr.txt

Pour afficher le fichier stderr.txt, utilisez :

$chatstderr.txt

Assurez-vous que l'utilisation 2 sera supérieure au signe >. Comme il n'y a pas de fichier myfile.txt dans le répertoire, la commande cat donnera une erreur qui sera ajoutée dans le fichier stderr.txt.

Ces sorties standard peuvent également être redirigées avec une seule commande, utilisez :

$ls 1>stdout.txt2>stderr.txt

La sortie de la commande ls sera écrite dans le stdout.txt fichier, mais le stderr.txt restera vide car il n'y aurait pas d'erreur.

Faisons maintenant pour stderr.txt :

$chatmonfichier.txt1>stdout.txt2>stderr.txt

Utilisez la commande mentionnée ci-dessous pour lire stderr.txt.

$chatstderr.txt

Et bien sûr, stdout.txt sera vide.

Conclusion :

La commande Linux lors de l'exécution donne une sortie standard qui peut être une sortie réussie ou une sortie d'erreur. Généralement, ces sorties ne peuvent pas être redirigées à l'aide d'opérateurs de redirection ; nous devons utiliser des identifiants numériques spécifiques avec le signe >. Dans ce guide, nous avons appris à utiliser ces touches numériques pour rediriger la sortie standard vers un fichier avec des exemples.