Rediriger stdout et stderr vers fichier

Redirect Stdout Stderr File



Lorsque vous redirigez une sortie de commande vers un fichier, vous remarquerez que les messages d'erreur sont imprimés sur la fenêtre du terminal. Toute commande exécutée dans n'importe quel shell Linux, comme bash, utilise trois flux d'E/S réguliers. Un descripteur de fichier numérique est utilisé pour représenter chaque flux.

  • Le flux d'entrée standard (stdin): 0
  • Le flux de sortie standard (stdout): 1
  • Le flux d'erreur standard (stderr): 2

Dans cet article, nous allons saisir les informations relatives à la redirection de stdout et de stderr vers un fichier.







Sortie standard (sortie standard) :

Chaque système d'exploitation basé sur Linux a une conviction d'un emplacement par défaut pour la commande exécutée. Tout le monde se réfère à cette notion en tant que sortie standard ou sortie standard pour que cela sonne plus facilement. Votre shell Bash ou Zsh recherche constamment l'emplacement de sortie par défaut. Lorsque le shell détecte une nouvelle sortie, il l'affiche sur l'écran du terminal pour que vous puissiez la voir. Sinon, il enverra la sortie à son emplacement par défaut.



Erreur standard (stderr) :

L'erreur standard ou stderr est similaire à l'entrée et à la sortie standard, mais elle est utilisée pour stocker les messages d'erreur. L'erreur standard peut être redirigée vers la ligne de commande ou un fichier à l'aide d'un terminal. Si vous souhaitez enregistrer ou stocker des messages dans un fichier journal séparé ou masquer les messages d'erreur, la redirection de stderr vous aidera. Passons maintenant au côté pratique de la redirection stdout et stderr.



Rediriger stdout et stderr vers un fichier :

Comme la redirection est une méthode de capture d'une sortie de programme et de son envoi en tant qu'entrée vers une autre commande ou un autre fichier. Les flux d'E/S peuvent être redirigés en utilisant l'opérateur n>, où n est le numéro du descripteur de fichier. Pour rediriger stdout, nous utilisons 1> et pour stderr, 2> est ajouté en tant qu'opérateur.





Nous avons créé un fichier nommé sample.txt pour stocker la sortie redirigée dans notre répertoire actuel.



La (commande > fichier) est considérée comme l'opérateur de redirection classique qui ne redirige que la sortie standard avec l'erreur standard affichée dans le terminal. Nous montrerons également différentes options pour rediriger stderr.

Redirection de stderr et stdout vers des fichiers séparés :

Vous trouverez ci-dessous la syntaxe de la commande pour rediriger stdout et stderr vers des fichiers séparés.

commander >dehors2>Erreur

La commande ci-dessous redirige la sortie vers le fichier de sortie et les messages d'erreur vers le fichier d'erreur.

$chatexemple.txt>dehors2>Erreur

Redirection de stderr vers stdout :

C'est une pratique courante de rediriger le stderr avec la sortie standard d'un programme pour tout stocker dans un seul fichier. Voici la syntaxe de la commande pour rediriger stderr vers stdout :

commander >dehors2> &1$ls >samplefile.txt2> &1

$chatsamplefile.txt

> les redirections out redirigent le stdout vers samplefile.txt, et 2>&1 redirigera le stderr vers l'emplacement actuel de stdout.

Si stderr est d'abord redirigé vers stdout, utilisez la commande ci-dessous pour rediriger la sortie standard vers un fichier.

commander 2> &1 > déposer$ls -au 2> &1 >samplefile.txt

$chatsamplefile.txt

&> est également utilisé pour la même fonctionnalité que 2>&1 effectue.

commander &> déposer$ls &>samplefile.txt

$chatsamplefile.txt

Rediriger stdout et stderr vers un seul fichier :

Tous les shells ne prennent pas en charge cette redirection de formulaire, mais bash et Zsh la prennent en charge. Stdout et stderr peuvent être redirigés en utilisant la syntaxe suivante.

commander &>dehors$chatexemple.txt&>dehors

Dans la prochaine section de l'article, nous examinerons l'exemple séparé pour la redirection stdout et stderr.

Redirection de stdout vers un fichier :

La sortie standard est représentée par le 1 dans la liste des numéros de descripteur de fichier. Pour la commande de redirection sans aucun numéro de descripteur de fichier, le terminal définit sa valeur sur 1. La syntaxe pour rediriger la sortie standard vers un fichier est donnée comme suit :

commander > déposer

Nous utilisons le sample.file pour stocker la sortie standard de la commande ls -al

$ls -au >exemple.txt

$chatexemple.txt

commander 1> déposer$ls 1>exemple.txt

$chatexemple.txt

Redirection de stderr vers un fichier :

Utilisez l'opérateur 2> pour rediriger le stderr vers un fichier.

commander 2> déposer $ls -au 2>exemple.txt

Nous pouvons combiner l'exécution de stderr et stdout dans une seule commande de redirection.

commander 2>erreur.txt1>sortie.txt

Dans l'exemple ci-dessous, les messages d'erreur seront stockés dans error.txt, où output.txt aura sa sortie standard de la commande ls.

$ls 2>erreur.txt1>sortie.txt

$chatsortie.txt

Conclusion:

Avoir le concept de redirection et de descripteurs de fichiers pour les flux d'E/S est très utile lorsque l'on travaille dans un terminal Linux. Dans cet article, nous avons parlé des flux d'E/S standard, y compris stdout et stderr. La première section de cet article vous apporte des informations détaillées sur la redirection, les flux d'E/S et le descripteur de fichier numérique. Ensuite, vous avez vu l'exemple pratique de diverses formes de redirection stdout et stderr.