Flux standard dans Bash
- Flux standard
- Entrée standard
- Entrée standard à l’aide du clavier
- Entrée standard à l’aide de fichiers
- Entrée standard de la redirection
- Entrée standard de la tuyauterie
- Sortie standard
- Sortie standard à afficher
- Sortie standard redirigée vers le fichier
- Sortie standard via un tuyau
- Erreur standard
- Erreur standard redirigée vers le fichier
- Rediriger toutes les sorties vers un fichier
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.
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.
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.
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.
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.
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.
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.
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.
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
.
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
.
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
.