Flux standard dans Bash

Fumbani Banda 30 janvier 2023
  1. Flux standard
  2. Entrée standard
  3. Entrée standard à l’aide du clavier
  4. Entrée standard à l’aide de fichiers
  5. Entrée standard de la redirection
  6. Entrée standard de la tuyauterie
  7. Sortie standard
  8. Sortie standard à afficher
  9. Sortie standard redirigée vers le fichier
  10. Sortie standard via un tuyau
  11. Erreur standard
  12. Erreur standard redirigée vers le fichier
  13. Rediriger toutes les sorties vers un fichier
Flux standard dans Bash

Ce didacticiel explique les flux standard et la redirection de la sortie et de l’entrée vers et depuis un fichier.

Flux standard

Sous Linux, il existe trois flux standard ; entrée standard (stdin), sortie standard (stdout) et erreur standard (stderr). Chaque flux est représenté par un descripteur de fichier. L’entrée standard est représentée par un 0, la sortie standard par un 1 et l’erreur standard par un 2.

Entrée standard

L’entrée standard est constituée de données transmises à un programme. C’est généralement en tapant sur le clavier. Il peut également s’agir de données qui ont été canalisées ou redirigées vers le programme. L’entrée standard utilise EOF (fin de fichier) pour indiquer la fin des données d’entrée.

Entrée standard à l’aide du clavier

Nous utiliserons la commande cat pour démontrer l’entrée standard en utilisant les données d’entrée du mot-clé. La commande cat prend une entrée et l’affiche à l’écran.

Ouvrez le terminal Linux et tapez cat, puis appuyez sur Entrée. Vous pouvez maintenant taper n’importe quelle entrée, et une fois que vous avez appuyé sur Entrée, la commande cat affiche l’entrée sur le terminal. La commande cat s’exécute en boucle ; pour l’empêcher de recevoir d’autres entrées, appuyez sur CTRL+D. Il agit comme un signal pour indiquer l’EOF.

cat stdin

Entrée standard à l’aide de fichiers

Les fichiers peuvent également fournir une entrée à un programme. Nous utiliserons la commande cat pour démontrer qu’un fichier peut être utilisé comme entrée standard.

La commande cat prend le nom du fichier en argument et affiche le contenu du fichier sur le terminal. Dans l’image ci-dessous, la commande cat prend le fichier output.txt et affiche son contenu sur le terminal.

cat stdin2

Entrée standard de la redirection

La redirection d’entrée standard utilise l’opérateur de redirection d’entrée standard, <. La redirection d’entrée utilise la notation command < filename. Cela signifie que l’entrée de la commande provient du contenu à l’intérieur du nom de fichier spécifié.

Dans l’image ci-dessous, le contenu du output.txt est passé à la commande cat qui l’imprime sur le terminal.

stdin3-cat

Entrée standard de la tuyauterie

Un opérateur de tube est utilisé pour transmettre la sortie d’une commande comme entrée à une autre commande. L’opérateur pipe est une barre verticale, |.

Ci-dessous, la commande head récupère les 10 premières lignes du fichier, output.txt, et les dirige vers la commande cat en tant qu’entrée standard. La commande cat l’affiche en sortie sur le terminal.

stdin4-cat

Sortie standard

La sortie standard affiche les données générées par un programme. Ces données sont imprimées sur le terminal si elles ne sont pas redirigées ou canalisées.

Sortie standard à afficher

Presque toutes les commandes Linux peuvent être utilisées pour démontrer la sortie standard. Nous utiliserons la commande head pour le démontrer. La commande head prend un nom de fichier comme argument et n’imprime que les 10 premières lignes du fichier.

stdout-tête

Sortie standard redirigée vers le fichier

La redirection de sortie standard utilise l’opérateur de redirection de sortie standard, >. La redirection de sortie utilise la notation commande > nom de fichier. Cela signifie que la sortie de la commande doit être écrite dans le nom de fichier spécifié.

La notation command >> filename signifie ajouter la sortie de la commande au fichier au lieu d’écraser le fichier existant. Le >> est appelé l’opérateur de redirection d’ajout.

Nous utilisons l’opérateur de redirection de sortie pour rediriger la sortie de la commande ls vers le fichier output.txt. La commande cat permet d’afficher le contenu du fichier passé en argument.

redirection stdout

Sortie standard via un tuyau

Un opérateur de tube est utilisé pour transmettre la sortie d’une commande à une autre commande. L’opérateur pipe est une barre verticale, |.

Ici, la sortie de la commande ls est redirigée vers la commande head. La commande head affiche uniquement (sortie standard) les 5 premières lignes vers le terminal à partir de l’entrée qui lui a été redirigée.

stdout-pipe

Erreur standard

L’erreur standard est similaire à la sortie standard sauf qu’elle est utilisée pour les messages d’erreur d’un programme.

Nous utiliserons la commande ls pour démontrer l’erreur standard. La commande ls est utilisée pour afficher le contenu d’un dossier. Nous passerons un nom de dossier qui n’existe pas comme argument à la commande ls, et elle affichera un message d’erreur en utilisant l’erreur standard.

stderror-dossier

Erreur standard redirigée vers le fichier

Nous utilisons l’opérateur de redirection de sortie standard pour rediriger l’erreur standard vers un fichier. Cependant, nous devons préciser que nous souhaitons rediriger l’erreur standard en ajoutant 2 à l’opérateur de redirection de sortie, 2 comme descripteur de fichier.

Redirigeons maintenant l’erreur standard de la commande ls vers un fichier. Le 2> précise que seules les erreurs générées par la commande ls doivent être redirigées vers le fichier error_file.txt.

fichier stderr

Utilisons la commande cat pour afficher le contenu du errors_file.txt. Ci-dessous, on voit que le fichier contient le message d’erreur de la commande ls.

stderr-cat

Rediriger toutes les sorties vers un fichier

Pour rediriger à la fois la sortie standard et l’erreur standard vers le même fichier, utilisez la notation suivante,

command > file 2>&1. Il redirige les deux flux de la commande vers le fichier spécifié.

Dans l’image ci-dessous, la sortie standard et l’erreur standard de la commande ls sont redirigées vers le même fichier, output.txt.

sortie-les deux

Fumbani Banda avatar Fumbani Banda avatar

Fumbani is a tech enthusiast. He enjoys writing on Linux and Python as well as contributing to open-source projects.

LinkedIn GitHub