GNU/Linux >> Tutoriels Linux >  >> Linux

Que sont les tuyaux sous Linux ? Comment fonctionne la redirection de tuyau ?

Vous avez peut-être utilisé une syntaxe telle que cmd0 | cmd1 | cmd2 trop souvent dans votre terminal.

Vous savez probablement aussi que c'est la redirection de canal qui est utilisée pour rediriger la sortie d'une commande comme entrée de la commande suivante.

Mais savez-vous ce qui se cache dessous ? Comment fonctionne réellement la redirection de canal ?

Ne vous inquiétez pas, car aujourd'hui, je vais démystifier les tuyaux Unix afin que la prochaine fois que vous irez à un rendez-vous avec ces barres verticales fantaisistes, vous saurez exactement ce qui se passe.

Remarque :j'ai utilisé le terme Unix à certains endroits parce que le concept de canaux (comme tant d'autres choses sous Linux) provient d'Unix.

Les tubes sous Linux :l'idée générale

Voici ce que vous verrez partout concernant "Qu'est-ce que les pipes Unix ?" :

  • Les pipes Unix sont un mécanisme IPC (Inter Process Communication), qui transmet la sortie d'un programme à l'entrée d'un autre programme.

Maintenant, c'est l'explication générale que tout le monde donne. Je veux aller plus loin. Reformulons la ligne précédente de manière plus technique en supprimant les abstractions :

  • Les pipes Unix sont un mécanisme IPC (Inter Process Communication) qui prend la stdout d'un programme et le transmet au stdin d'un autre programme via un tampon.

Beaucoup mieux. Enlever l'abstraction l'a rendu beaucoup plus propre et plus précis. Vous pouvez consulter le schéma suivant pour comprendre le fonctionnement du tuyau :

L'un des exemples les plus simples de la commande pipe consiste à transmettre une sortie de commande à la commande grep pour rechercher une chaîne spécifique.

Par exemple, vous pouvez rechercher des fichiers dont le nom contient txt comme ceci :

Gardez à l'esprit :Pipe redirige stdout vers stdin mais pas comme argument de commande

Une chose très importante à comprendre est que pipe transfère le stdout d'une commande à stdin d'un autre mais pas comme argument de commande. Je vais l'expliquer avec un exemple.

Si vous utilisez cat commande sans aucun argument, elle sera par défaut lue à partir de stdin . Voici un exemple :

$ cat
Subscribe to Linux Handbook for more articles like this
^D
Subscribe to Linux Handbook for more articles like this

Ici, j'ai utilisé cat sans transmettre de fichiers, il est donc par défaut stdin . Ensuite, j'ai écrit une ligne, puis j'ai utilisé Ctrl + d pour lui faire savoir que j'avais fini d'écrire (Ctrl + d implique EOF ou End Of File). Une fois que j'ai fini d'écrire, cat a lu depuis stdin , et a écrit cette ligne dans stdout .

Considérez maintenant la commande suivante :

echo hey | cat

La deuxième commande n'est PAS équivalente à cat hey . Ici, la stdout , "hey", est placé dans un tampon et transféré dans le stdin de cat . Comme il n'y avait pas d'arguments de ligne de commande, cat était par défaut stdin pour lire, et il y avait déjà quelque chose dans le stdin, donc la commande cat l'a pris et imprimé sur stdout .

En fait, j'ai créé un fichier nommé hey et j'y ai mis du contenu. Vous pouvez clairement voir la différence dans l'image ci-dessous :

Types de tuyaux sous Linux

Il existe deux types de canaux sous Linux :

  • Canaux sans nom, également appelés canaux anonymes
  • Canaux nommés

Lire l'histoire complète

Le reste de l'article est disponible uniquement pour les membres de LHB. Vous pouvez vous inscrire maintenant GRATUITEMENT pour lire le reste de cet article ainsi que l'accès à tous les messages réservés aux membres. Vous êtes également abonné à notre newsletter Linux bimensuelle.

S'abonnerVous avez déjà un compte ?Se connecter
Linux
  1. Qu'est-ce qu'une commande Chown sous Linux et comment l'utiliser

  2. Comment utiliser les canaux et les canaux nommés sous Linux (avec exemples)

  3. Comment savoir ce que fait une commande Linux

  4. Comment fonctionne la commande Tee ? ?

  5. Que signifie le symbole du tuyau linux | fais?

Comment trouver les périphériques connectés au réseau sous Linux

Que sont les ports ? Comment vérifier les ports ouverts Linux ?

ExplainShell - Trouvez ce que fait chaque partie d'une commande Linux

Que signifie la commande Cat sous Linux ?

Qu'est-ce que la commande source sous Linux et comment ça marche ?

Qu'est-ce que la commande Grep sous Linux ? Pourquoi est-il utilisé et comment fonctionne-t-il ?