stdin (entrée standard)
100%

Text-Fu · Leçon 2

stdin (entrée standard)

Découvrez comment les programmes lisent l'entrée standard et comment Bash relie ce flux à un fichier.

L'entrée standard, abrégée stdin, est le flux qu'un programme lit normalement pour recevoir des données. Dans un terminal interactif, le shell la relie généralement à votre saisie.

Entrée standard et descripteur de fichier 0

Par convention, les trois flux standard utilisent ces descripteurs :

  • 0 : entrée standard (stdin)
  • 1 : sortie standard (stdout)
  • 2 : erreur standard (stderr)

Un programme choisit comment employer ces flux. Une commande conçue pour lire stdin attend souvent une saisie au terminal si aucun fichier ni autre source n'est fourni.

Quel descripteur représente conventionnellement l'entrée standard ?

Rediriger un fichier vers stdin

L'opérateur < demande à Bash d'ouvrir un fichier en lecture et de le relier à stdin :

$ cat < peanuts.txt
Hello World

Le shell traite < peanuts.txt ; cat lit simplement le descripteur 0. Le chemin ne lui est pas transmis comme opérande. Si le fichier n'existe pas ou ne peut être ouvert, le shell signale l'erreur et ne lance pas la commande avec cette entrée.

Quelle commande fait lire names.txt à sort sur son entrée standard ?

Opérande de fichier ou redirection d'entrée

Certaines commandes acceptent soit un nom de fichier, soit stdin, avec parfois une légère différence :

$ wc -l peanuts.txt
1 peanuts.txt
$ wc -l < peanuts.txt
1

Les deux formes comptent les mêmes lignes. Dans la première, wc connaît le nom reçu en argument. Dans la seconde, il ne reçoit qu'un flux et n'a aucun nom à afficher.

Pourquoi wc -l < peanuts.txt omet-il normalement peanuts.txt dans sa sortie ?

Combiner les redirections d'entrée et de sortie

Une même ligne peut rediriger plusieurs flux :

$ cat < peanuts.txt > banana.txt

Le shell réalise deux connexions indépendantes :

  1. < peanuts.txt ouvre peanuts.txt comme stdin de cat.
  2. > banana.txt crée ou tronque banana.txt et le relie à stdout.

cat lit stdin et écrit sur stdout ; banana.txt reçoit donc le contenu source. Pour une copie ordinaire, cp peanuts.txt banana.txt exprime mieux l'intention ; cet exemple illustre les flux.

Dans cat < input.txt > output.txt, quel fichier fournit stdin et lequel reçoit stdout ?

Leçon terminée

Vous avez terminé stdin (entrée standard)

Vous savez maintenant relier l'entrée standard d'une commande à un fichier.

  • Reconnaître stdin comme le descripteur 0.

  • Rediriger un fichier lisible avec <.

  • Distinguer un opérande d'une entrée redirigée.

  • Combiner volontairement les redirections stdin et stdout.

Conservez votre progression

Créez un compte gratuit pour enregistrer cette leçon et continuer sur n'importe quel appareil.

Créer un compte gratuit
Leçon Suivante
Retour à Text-Fu