Recherche de site Web

Comment utiliser les flux Stdin, Stderr et Stdout dans Bash


Trois flux sont ouverts au démarrage du système d'exploitation Linux. Ce sont stdin, stdout et stderr. La forme complète de stdin est une entrée standard qui est utilisée pour prendre une entrée de l'utilisateur. La forme complète de stdout est la sortie standard utilisée pour stocker la sortie de la commande dans le flux stdout. La forme complète de stderr est l'erreur standard qui est utilisée pour stocker le message d'erreur généré à partir de n'importe quelle commande dans le flux de données. Les utilisations de ces flux sont présentées dans ce didacticiel. Les valeurs d'identifiant numérique correspondantes de stdin, stdout et stderr sont 0, 1 et 2.

Opérateurs de redirection de Stdin, Stdout et Stderr

    • Le « < » ou « 0< » est utilisé pour le flux stdin.

    • Le « > » ou « 1> » est utilisé pour le flux stdout.

    • Le "2" est utilisé pour le flux stderr.

Utilisations de Stdin, Stdout et Stderr

Les utilisations de stdin, stdout et stderr sont présentées dans cette partie du didacticiel à l'aide de plusieurs exemples.

Exemple 1 : Utilisation de Stdin

La méthode consistant à prendre le contenu d'un fichier et à l'imprimer dans le terminal est illustrée dans cet exemple.

Exécutez la commande « cat » suivante pour créer un fichier texte nommé testdata.txt avec du contenu :

$ cat > testdata.txt

Exécutez la commande "cat" suivante pour ajouter du contenu dans le fichier testdata.txt :

$ cat >> testdata.txt

Exécutez la commande "cat" suivante pour prendre une entrée du fichier testdata.txt et l'imprimer dans le terminal :

$ cat < testdata.txt

Sortie :

La sortie suivante apparaît après l'exécution des commandes précédentes après avoir ajouté la chaîne « linux-console.net » et « Scripting Language » dans le fichier testdata.txt :

Exemple 2 : Utilisation de Stdout

La méthode de création d'un fichier à l'aide d'un tube (|) et d'un opérateur de redirection est illustrée dans cet exemple.

Exécutez la commande suivante pour écrire une chaîne de données dans le fichier texte nommé testdata2.txt par canalisation. La sortie de la commande « echo » est envoyée à l'entrée de la commande « cat » à l'aide de l'opérateur pipe (|) :

$ echo "Learn Bash Programming" | cat > testdata2.txt

Exécutez la commande « cat » suivante pour vérifier le contenu du fichier testdata2.txt :

$ cat testdata2.txt

Sortie :

La sortie suivante apparaît après l'exécution des commandes précédentes. Selon la sortie, la sortie de la commande « echo » est écrite dans le fichier testdata2.txt :

Exécutez la commande suivante pour écrire la sortie de la commande « ls –l » dans un fichier texte nommé list.txt à l'aide de l'opérateur de redirection ('>') :

$ ls -l  > list.txt

Exécutez la commande « cat » suivante pour vérifier le contenu du fichier list.txt :

$ cat list.txt

Sortie :

La sortie suivante apparaît après l'exécution des commandes précédentes. Selon la sortie, la sortie de la commande « ls –l » est écrite dans le fichier list.txt :

Exemple 3 : Utilisation de Stdin et Stdout

La méthode d'utilisation à la fois de stdin et de stdout pour prendre une entrée d'un fichier et l'écrire dans un fichier est illustrée dans cet exemple.

Exécutez la commande « cat » suivante pour prendre le contenu du fichier testdata.txt et l'écrire dans le fichier testfile.txt et le terminal :

$ cat < testdata.txt > testfile.txt

Exécutez la commande « cat » suivante pour imprimer le contenu du fichier testdata.txt :

$ cat testdata.txt

Exécutez la commande « cat » suivante pour imprimer le contenu du fichier testfile.txt :

$ cat testfile.txt

Sortie :

La sortie suivante apparaît après l'exécution des commandes précédentes. Selon la sortie, le contenu du fichier testdata.txt est écrit dans le fichier testfile.txt et imprimé dans le terminal :

Exemple 4 : Utilisation de Stderr

Le contenu de l'erreur standard peut être imprimé dans le terminal ou redirigé dans un fichier ou envoyé au /dev/null qui fonctionne comme la corbeille. Les différentes manières de transmettre l'erreur standard sont présentées dans cet exemple.

La commande suivante est valide et imprime la chaîne "Hello" avec la nouvelle ligne. Ainsi, aucune erreur standard n'est générée pour la commande suivante :

$ printf "%s\n" "Hello"

La commande suivante n'est pas valide car il n'y a pas de commande nommée "pirntf". Ainsi, une erreur standard est générée et l'erreur est imprimée dans le terminal :

$ pirntf "%s\n" "Hello"

Sortie :

La sortie suivante apparaît après l'exécution de la commande précédente. Selon la sortie, l'erreur standard est imprimée dans le terminal :

Parfois, il faut imprimer l'erreur personnalisée en masquant l'erreur standard pour rendre l'erreur plus compréhensible pour les utilisateurs. Cette tâche peut être effectuée en redirigeant l'erreur dans le fichier /dev/null. Le "2>" est utilisé ici pour rediriger l'erreur vers /dev/null.

Exécutez la commande suivante pour rediriger l'erreur dans le /dev/null qui n'affichera aucune erreur si une erreur existe :

$ pirntf "%s\n" "Hello" 2> /dev/null

Sortie :

La sortie suivante apparaît après l'exécution de la commande précédente. Selon la sortie, l'erreur standard n'est pas imprimée dans le terminal pour rediriger vers /dev/null :

Parfois, l'erreur standard nécessite de stocker dans un fichier pour une utilisation future. Cette tâche peut être effectuée en redirigeant l'erreur dans un fichier à l'aide de l'opérateur "2>".

Exécutez la commande suivante pour rediriger l'erreur standard dans un fichier nommé errorfile.txt :

$ pirntf "%s\n" "Hello" 2> errorfile.txt

Exécutez la commande suivante pour vérifier le contenu du fichier errorfile.txt :

$ cat errorfile.txt

Sortie :

La sortie suivante apparaît après l'exécution des commandes précédentes. Selon la sortie, l'erreur standard est écrite correctement dans le fichier errorfile.txt :

L'erreur standard peut être redirigée vers /dev/null et vers le fichier errorfile.txt à l'aide de la commande suivante :

$ pirntf "%s\n" "Hello" 2> /dev/null > errorfile.txt

Conclusion

Les utilisations de stdin, stdout et stderr sont expliquées dans ce didacticiel à l'aide de plusieurs exemples qui aideront les utilisateurs Linux à comprendre le concept de ces flux et à les utiliser correctement si nécessaire.

Articles connexes: