Je lis un livre, il dit :
Chaque processus dispose d'au moins trois canaux de communication :"entrée standard" (STDIN), "sortie standard" (STDOUT) et "erreur standard" (STDERR).
La plupart des commandes acceptent leur entrée depuis STDIN et écrivent leur sortie dans STDOUT.
Elles écrivent des messages d'erreur dans STDERR. Cette convention vous permet d'enchaîner
des commandes comme des blocs de construction pour créer des pipelines composites.Le shell interprète les symboles
<
,>
, et>>
comme instructions pour rediriger l'entrée ou la sortie d'une commande vers ou depuis un fichier.Pour connecter le STDOUT d'une commande au STDIN d'une autre, utilisez le
|
symbole, communément appelé tuyau.ps -ef | grep httpd
Donc, fondamentalement, ce que cela dit, c'est que l'entrée standard est une commande qui permet à l'utilisateur d'écrire dans un fichier, tandis que la sortie standard est une commande qui a la sortie d'écriture du shell bash dans le shell, et l'erreur standard est comme la sortie mais c'est seulement invoqué en cas d'erreur dans le système de fichiers. Ensuite, nous arrivons à la partie de connexion STDOUT et STDIN et je suis perdu.
Réponse acceptée :
L'entrée standard et la sortie standard ne sont pas des commandes.
Imaginez les commandes comme des machines dans une usine avec une chaîne de montage. La plupart des machines sont conçues pour avoir une bande transporteuse pour introduire les données et une bande transporteuse pour extraire les données ; ce sont respectivement l'entrée standard et la sortie standard. L'erreur standard est une ouverture sur le côté de la machine où elle peut éjecter les rebuts.
+-------+ +------------------+ +------------------+ +------+
| input | | machine A | | machine B | |output|
| reser |=====|<stdin stdout>|=======|<stdin stdout>|=====|bucket|
| ‑voir | → | stderr | → | stderr | → | |
+-------+ +------------------+ +------------------+ +------+
|| ||
Le schéma ci-dessus montre une bande transporteuse qui passe par deux machines. Les données proviennent du réservoir d'entrée à gauche, sont transmises à la machine A, puis la sortie est acheminée vers la machine B (pour laquelle elle est entrée), et la sortie de la machine B est déposée dans le godet de sortie à droite.
En termes Unix, cela s'appelle un pipeline. La métaphore est celle de la plomberie :un tuyau relie la machine A à la machine B. La syntaxe shell pour le pipeline ci-dessus est
<input-file.txt commandA | commandB >output-file.txt
Le <
le symbole de redirection indique au shell de se connecter commandA
l'entrée standard du fichier input-file.txt
avant de lancer commandA
. (Vous pouvez placer la redirection avant ou après le nom de la commande.) Le >
le symbole de redirection indique au shell de se connecter commandB
la sortie standard de output-file.txt
. Le tube ("|
") Le symbole au milieu indique au shell de se connecter commandA
la sortie standard de commandB
l'entrée standard avant de les lancer.
Les commandes peuvent avoir plus d'une entrée et plus d'une sortie, mais c'est du matériel pour un autre jour.