Redirection d'entrée-sortie dans les exemples Linux/Unix
⚡ Résumé intelligent
La redirection sous Linux et Unix modifie l'endroit où une commande lit les entrées ou envoie les sorties, et inverse les chemins.ping le clavier et l'écran pour les fichiers ou les périphériques utilisant des opérateurs tels que le signe supérieur à, le signe inférieur à et l'opérateur d'ajout.

La redirection est l'une des fonctionnalités les plus utiles de Linux et le shell Unix, car il permet de définir où une commande lit ses entrées et envoie sa sortie. Cette page explique la redirection des entrées, des sorties et des erreurs à l'aide d'exemples concrets.
Qu’est-ce que la redirection ?
La redirection est une fonctionnalité de Linux qui permet, lors de l'exécution d'une commande, de modifier les périphériques d'entrée et de sortie standard. Le flux de travail de base de toute commande consiste à… commande Linux c'est qu'il prend une entrée et donne une sortie.
- Le périphérique d'entrée standard (stdin) est le clavier.
- Le périphérique de sortie standard (stdout) est l'écran.
Grâce à la redirection, les entrées et sorties standard mentionnées ci-dessus peuvent être modifiées.
Redirection de sortie
Le graphique ci-dessous marque le début des exemples de redirection de sortie.
Le symbole '>' est utilisé pour la redirection de la sortie (STDOUT).
Exemple :
ls -al > listings
Ici, la sortie de la commande `ls -al` est redirigée vers le fichier « listings » au lieu de s'afficher à l'écran. La capture d'écran ci-dessous illustre ce résultat.
Remarque : Utilisez le nom de fichier correct lorsque vous redirigez la sortie d’une commande vers un fichier. Si un fichier portant le même nom existe déjà, la commande redirigée supprimera son contenu puis l’écrasera.
Si vous ne souhaitez pas écraser un fichier mais voulez y ajouter du contenu, utilisez l'opérateur « >> ». La capture d'écran ci-dessous montre du contenu ajouté avec « >> ».
Vous pouvez rediriger la sortie standard non seulement vers des fichiers, mais aussi vers des périphériques.
$ cat music.mp3 > /dev/audio
La commande « cat » lit le fichier « music ».mp3 et envoie la sortie vers /dev/audio, qui est le périphérique audio. Si la configuration audio de votre PC est correcte, cette commande lira le fichier musical.mp3.
Redirection d'entrée
Le graphique ci-dessous présente la redirection des entrées.
Le symbole '<' est utilisé pour la redirection de l'entrée (STDIN).
Exemple : Le programme de messagerie sous Linux peut vous aider à envoyer des courriels depuis le terminal.
Vous pouvez saisir le contenu du courriel à l'aide du clavier, périphérique d'entrée standard. Si vous souhaitez joindre un fichier au courriel, vous pouvez utiliser l'opérateur de redirection d'entrée au format suivant.
mail -s "Subject" to-address < Filename
La capture d'écran ci-dessous montre la commande mail lisant un fichier en entrée.
Le fichier est ainsi joint à l'e-mail, qui est ensuite envoyé au destinataire.
Les exemples précédents étaient simples. Voyons maintenant quelques techniques de redirection avancées qui utilisent des descripteurs de fichiers.
Fichier Descriptors (FD)
Sous Linux et Unix, tout est un fichier. Les fichiers, les répertoires et même les périphériques sont des fichiers. Chaque fichier possède un numéro associé appelé descripteur de fichier (FD).
Le diagramme ci-dessous illustre les flux standard et leurs descripteurs de fichiers.
Votre écran possède également un descripteur de fichier. Lorsqu'un programme est exécuté, sa sortie est envoyée au descripteur de fichier de l'écran, et vous visualisez le résultat du programme sur votre moniteur. Si la sortie était envoyée au descripteur de fichier de l'imprimante, le résultat du programme serait imprimé.
Redirection des erreurs
Lorsque vous exécutez un programme ou une commande dans le terminal, trois fichiers sont toujours ouverts : l’entrée standard, la sortie standard et l’erreur standard.
Ces fichiers sont toujours présents lors de l'exécution d'un programme. Comme expliqué précédemment, un descripteur de fichier est associé à chacun de ces fichiers.
| Fichier | Fichier Descriptor |
|---|---|
| Entrée standard STDIN | 0 |
| Sortie standard STDOUT | 1 |
| Erreur standard STDERR | 2 |
Par défaut, le flux d'erreurs s'affiche à l'écran. La redirection d'erreurs permet de diriger les erreurs vers un fichier autre que l'écran.
Pourquoi la redirection des erreurs ?
La redirection d'erreurs est l'une des fonctionnalités les plus populaires d'Unix et de Linux.
Les utilisateurs réguliers d'Unix savent que de nombreuses commandes génèrent une quantité considérable d'erreurs. Par exemple, lors d'une recherche de fichiers, on obtient généralement le résultat suivant : autorisation Les erreurs de refus, qui ne sont généralement pas utiles à la personne recherchant un fichier particulier, peuvent s'avérer problématiques. Lors de l'exécution de scripts shell, il est souvent préférable d'éviter que les messages d'erreur n'encombrent la sortie normale du programme.
La solution consiste à rediriger les messages d'erreur vers un fichier.
Exemple 1
$ myprogram 2>errorsfile
La capture d'écran ci-dessous montre cette commande dans le terminal.
Ci-dessus, nous exécutons un programme nommé myprogram. Le descripteur de fichier pour la sortie d'erreur standard est 2. En utilisant « 2> », nous redirigeons la sortie d'erreur vers un fichier nommé « errorsfile ». Ainsi, la sortie du programme n'est pas encombrée d'erreurs.
Exemple 2
Voici un autre exemple qui utilise l'instruction find.
find . -name 'my*' 2>error.log
La commande find permet de rechercher dans le répertoire courant « . » un fichier dont le nom commence par « my », et d'envoyer les erreurs éventuelles vers error.log.
Exemple 3: Prenons un exemple plus complexe.
Les administrateurs de serveurs listent fréquemment les répertoires et stockent les sorties d'erreur et standard dans un fichier, qui peut être traité ultérieurement. Voici la commande.
ls Documents ABC> dirlist 2>&1
Le schéma ci-dessous montre la capture des deux flux dans un seul fichier.
Ici:
- 2>&1 signifie que STDERR est redirigé vers la même cible que STDOUT (qui est la liste des fichiers).
- Le flux d'erreur est redirigé vers la sortie standard, qui est ensuite redirigée vers le répertoire de fichiers. Ainsi, les deux flux sont écrits dans le répertoire de fichiers.
Le schéma ci-dessous résume comment les entrées, les sorties et la redirection des erreurs s'articulent.






.png)