GNU/Linux >> Tutoriels Linux >  >> Linux

Pipes et redirection sous Linux - expliqués !

Il est temps pour quelques bases de Linux. Parce que la chose la plus importante dans tous les domaines est :Ayez vos bases droites ! Parlons donc des tubes et de la redirection sous Linux .

Que sont les canaux et la redirection sous Linux ?

Redirection

Chaque processus sous Linux dispose d'au moins 3 canaux de communication disponibles :

  • Entrée standard - STDIN
  • Sortie standard - STDOUT
  • Erreur standard :STDERR

Le noyau lui-même configure ces canaux pour le compte du processus. Le processus lui-même ne sait pas nécessairement où ils mènent. La plupart des commandes Linux acceptent les entrées de STDIN et écrire la sortie dans STDOUT . Les messages d'erreur sont écrits dans STDERR . Cela vous permet de connecter des commandes ensemble pour créer des pipelines.

Le Shell utilise les symboles < ,> et >> en tant qu'instructions pour rediriger les instructions d'une entrée ou d'une sortie de commande vers ou depuis un fichier. Le < le symbole connecte le STDIN de la commande au contenu d'un fichier existant. Le > et le >> symboles redirigent STDOUT . > remplace le contenu existant du fichier et le >> des symboles leur sont ajoutés.

Regardons quelques exemples.

La commande suivante stocke le texte que vous tapez entre les " " dans un fichier. Si le fichier n'existe pas, il sera créé.

echo "Test Message" > testmessage

La commande suivante enverrait un e-mail avec le contenu de ce fichier, donc uniquement le texte, pas le fichier lui-même, à l'utilisateur Peter.

mail -s "testmsg" peter < testmessage

Un exemple avec la commande find

Si nous utilisons la commande find, nous obtenons une belle démonstration de la raison pour laquelle vous voudriez gérer STDOUT et STDERR séparément. Si nous lançons la commande suivante :

find / -name core

Nous recevons généralement beaucoup de messages d'erreur d'autorisation refusée. Pour supprimer tous ces messages d'erreur, vous pouvez exécuter la commande suivante à la place :

find / -name core 2> /dev/null

Ce qui nous donne un résultat beaucoup plus propre.

Tuyaux

Si nous voulons connecter certaines commandes, ou plus précisément le STDOUT d'une commande et le STDIN d'une autre, nous pouvons utiliser le symbole Pipe | pour faire ça. Faisons un exemple :

ls | head -4

Ce que cela fait, c'est qu'il connecte la commande ls avec la commande head via le Pipe | . Cela signifie qu'il exécute le ls commande avec la tête -4 extensions, répertoriant uniquement les 4 premiers fichiers de ce dossier. Vous pouvez également continuer et diriger une autre commande à la fin de celle-ci.

Si vous voulez que la deuxième commande ne soit exécutée que lorsque la première a réussi, vous pouvez utiliser le && symboles pour cela. Par exemple :

lpr /tmp/test && rm /tmp/test

Ne supprimerait le fichier de test que s'il avait d'abord été mis en file d'attente avec succès pour l'impression.

D'autre part, le || commande n'exécuterait la deuxième commande que si la première commande échouait.

Conclusion

Si vous travaillez régulièrement avec Linux, il est très important de savoir ce que font Pipes and Redirection sous Linux. Vous les utiliserez beaucoup si vous devez travailler sur la ligne de commande. Je ferai plus de ces morceaux plus courts de Linux Basics à l'avenir. Je ne veux pas que ces articles soient trop longs pour que vous puissiez assimiler les informations plus facilement. Consultez également d'autres didacticiels Linux et Open Source !


Linux
  1. Utilisation de l'entrée-sortie et de la redirection d'erreur sous Linux

  2. Redirection Io et commande principale ?

  3. Commande wc Linux

  4. Commande grep Linux

  5. ln Exemples de commandes sous Linux

Commande Gzip sous Linux

Commande Gunzip sous Linux

Commande Stat sous Linux

Explication de la commande Linux Stat

Explication de la commande Arping sur Linux

Explication :Redirection des entrées, des sorties et des erreurs sous Linux