Rediriger STDOUT et STDERR pour fichier

Rediriger STDOUT et STDERR pour fichier

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 fichiers numériques 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 saisirons les informations qui sont sous redirection STDOUT et STDERR pour déposer.

Sortie standard (stdout):

Chaque système d'exploitation basé sur Linux a une conviction d'une place par défaut pour la commande exécutée. Tout le monde fait référence à cette notion comme «stdout» ou «sortie standard» pour le rendre plus facile. Votre shell bash ou Zsh est constamment à la recherche de l'emplacement de sortie par défaut. Lorsque le shell détecte une nouvelle sortie, il l'affiche sur l'écran du terminal pour le 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 redirigeé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 STDderr vous aidera. Passons maintenant au côté pratique de la redirection STDOUT et STDERR.

Redirection STDOUT et STDERR vers un fichier:

Car la redirection est une méthode pour capturer une sortie de programme et l'envoyer en entrée dans une autre commande ou fichier. Les flux d'E / S peuvent être redirigées en mettant l'opérateur N> utilisé, où N est le numéro de descripteur de fichier. Pour la redirection STDOUT, nous utilisons "1>" et pour STDERR, "2>" est ajouté en tant qu'opérateur.

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

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

Redirection STDERR et STDOUT pour séparer les fichiers:

Vous trouverez ci-dessous la syntaxe de commande pour rediriger STDOUT et STDERR pour séparer les fichiers.

Commande> Out 2> Erreur

La commande diable redirigera la sortie vers les messages de fichiers et d'erreur «Out» vers le fichier «Erreur».

$ échantillon de chat.TXT> OUT 2> ERREUR

Redirection 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 commande pour rediriger Stderr vers Stdout:

Commande> Out 2> & 1
$ ls> échantillon.txt 2> & 1
$ Cat SampleFile.SMS

> Les redirectes redirigent le stdout vers un échantillon.txt et 2> & 1 redirigera le stderr vers l'emplacement actuel de Stdout.

Si Stderr est en premier redirigé vers Stdout, utilisez la commande ci-dessous pour rediriger le stdout vers un fichier.

Commande 2> & 1> Fichier
$ ls -al 2> & 1> SampleFile.SMS
$ Cat SampleFile.SMS

"&>" Est également utilisé pour la même fonctionnalité que "2> & 1" exécute.

Commande et> fichier
$ ls &> SampleFile.SMS
$ Cat SampleFile.SMS

Redirection Stdout et Stderr vers un seul fichier:

Tous les obus ne soutiennent pas cette forme de redirection, mais Bash et Zsh le prennent en charge. Stdout et Stderr peuvent être redirigées en utilisant la syntaxe suivante.

Commande et> Out
$ échantillon de chat.txt &> out

Dans la prochaine section de l'article, nous consulterons l'exemple distinct pour la redirection de Stdout et Stderr.

Redirection STDOUT vers un fichier:

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

commande> fichier

Nous utilisons «l'échantillon.fichier »pour stocker la sortie standard de la commande« ls -al »

$ ls -al> échantillon.SMS
$ échantillon de chat.SMS
Commande 1> Fichier
$ ls 1> échantillon.SMS
$ échantillon de chat.SMS

Redirection STDERR vers un fichier:

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

Commande 2> Fichier
$ ls -al 2> échantillon.SMS

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

Commande 2> Erreur.TXT 1> Sortie.SMS

Dans l'exemple divisé ci-dessous, les messages d'erreur seront stockés dans «Erreur.txt ", où".txt "aura sa sortie standard de" Commande LS."

$ ls 2> Erreur.TXT 1> Sortie.SMS
$ la production de chat.SMS

Conclusion:

Avoir le concept de redirection et des descripteurs de fichiers pour les flux d'E / S est très précieux tout en travaillant dans un terminal Linux. Dans cet article, nous avons parlé des flux d'E / S réguliers, 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 fichiers numériques. Ensuite, vous avez vu l'exemple pratique pour diverses formes de redirection STDOUT et STDERR.