Redirection d'entrée-sortie dans les exemples Linux/Unix
Qu’est-ce que la redirection ?
La redirection est une fonctionnalité de Linux telle que lors de l'exécution d'une commande, vous pouvez modifier les périphériques d'entrée/sortie standard. Le flux de travail de base de tout 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.
Avec la redirection, l'entrée/sortie standard ci-dessus peut être modifiée.
Cliquer sur ici si la vidéo n'est pas accessible
Redirection de sortie
Votre '>' est utilisé pour la redirection de sortie (STDOUT).
Mise en situation :
ls -al > listings
Ici, la sortie de la commande ls -al est redirigée vers le fichier "listes" au lieu de votre écran.
Notes: utilisez le nom de fichier correct lors de la redirection de la sortie de la commande vers un fichier. S'il existe un fichier existant portant le même nom, la commande redirigée supprimera le contenu de ce fichier, puis il pourra être écrasé.
Si vous ne voulez pas qu'un fichier soit écrasé mais que vous voulez ajouter plus de contenu à un fichier existant, vous devez utiliser '>>' opérateur.
Vous pouvez rediriger la sortie standard, non seulement vers des fichiers, mais aussi vers des appareils !
$ cat music.mp3 > /dev/audio
La commande cat lit le fichier music.mp3 et envoie la sortie à /dev/audio qui est le périphérique audio. Si les configurations sonores de votre PC sont correctes, cette commande jouera le fichier music.mp3
Redirection d'entrée
Votre 'Le symbole ' est utilisé pour la redirection d'entrée (STDIN)
Mise en situation : Le programme de messagerie sous Linux peut vous aider à envoyer des e-mails depuis le terminal.
Vous pouvez saisir le contenu de l'e-mail à l'aide du clavier standard de l'appareil. Mais si vous souhaitez joindre un fichier à un e-mail, vous pouvez utiliser l'opérateur de redirection d'entrée au format suivant.
Mail -s "Subject" to-address < Filename
Cela joindrait le fichier à l'e-mail et il serait envoyé au destinataire.
Les exemples ci-dessus étaient simples. Examinons quelques techniques de redirection avancées qui utilisent File Descriptors.
Déposez votre dernière attestation Descriptors (FD)
Sous Linux/Unix, tout est un fichier. Les fichiers normaux, les répertoires et même les appareils sont des fichiers. Chaque fichier a un numéro associé appelé Fichier Descriptou (FD).
Votre écran dispose également d'un fichier Descriptou. Lorsqu'un programme est exécuté, la sortie est envoyée dans un fichier Descriptou de l'écran, et vous voyez la sortie du programme sur votre moniteur. Si la sortie est envoyée vers File Descriptou de l'imprimante, la sortie du programme aurait été imprimée.
Redirection des erreurs
Chaque fois que vous exécutez un programme/une commande sur le terminal, 3 fichiers sont toujours ouverts, à savoir l'entrée standard, la sortie standard, l'erreur standard..
Ces fichiers sont toujours présents chaque fois qu'un programme est exécuté. Comme expliqué précédemment, un descripteur de fichier est associé à chacun de ces fichiers.
Déposez votre dernière attestation | Déposez votre dernière attestation Descriptor |
---|---|
Entrée standard STDIN | 0 |
Sortie standard STDOUT | 1 |
Erreur standard STDERR | 2 |
Par défaut, le flux d'erreurs est affiché à l'écran. La redirection des erreurs consiste à acheminer les erreurs vers un fichier autre que l'écran.
Pourquoi la redirection des erreurs ?
La redirection des erreurs est l'une des fonctionnalités les plus populaires de Unix / Linux.
Les utilisateurs fréquents d'UNIX s'apercevront que de nombreuses commandes génèrent d'énormes quantités d'erreurs.
- Par exemple, lors de la recherche de fichiers, on obtient généralement des erreurs d'autorisation refusée. Ces erreurs n'aident généralement pas la personne qui recherche un fichier particulier.
- Lors de l'exécution de scripts shell, vous ne voulez souvent PAS que des messages d'erreur encombrent la sortie normale du programme.
La solution consiste à rediriger les messages d'erreur vers un fichier.
Exemple 1
$ myprogram 2>errorsfile
Ci-dessus, nous exécutons un programme nommé myprogram.
Le descripteur de fichier pour l'erreur standard est 2.
En utilisant "2>", nous redirigeons la sortie d'erreur vers un fichier nommé "errorfile"
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
À l’aide de la commande « find », nous recherchons le « ». répertoire actuel pour un fichier dont le « nom » commence par « mon »
3 Exemple: Voyons un exemple plus complexe,
Les administrateurs de serveur répertorient fréquemment les répertoires et stockent à la fois la sortie d'erreur et la sortie standard dans un fichier, qui peut être traité ultérieurement. Voici la commande.
ls Documents ABC> dirlist 2>&1
Ici,
- qui écrit la sortie d'un fichier vers l'entrée d'un autre fichier. 2>&1 signifie que STDERR redirige vers la cible de STDOUT (qui est le fichier dirlist)
- Nous redirigeons la sortie d'erreur vers la sortie standard qui à son tour est redirigée vers le fichier dirlist. Par conséquent, la sortie est écrite dans le fichier dirlist
Résumé
- Chaque fichier sous Linux a un fichier correspondant Descriptou associé à celui-ci
- Le clavier est le périphérique d'entrée standard tandis que votre écran est le périphérique de sortie standard
- « > » est l'opérateur de redirection de sortie. ">>" ajoute la sortie à un fichier existant
- "<" est l'opérateur de redirection d'entrée
- ">&" redirige la sortie d'un fichier vers un autre.
- Vous pouvez rediriger l'erreur en utilisant son fichier correspondant Descriptou 2.