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 toute commande Linux est qu'elle prend une entrée et donne une sortie.
Types de redirection
- ">" Le périphérique d'entrée standard (stdin) est le clavier.
- "<" Le périphérique de sortie standard (stdout) est l'écran.
- ">>" sortie standard
- "<<" saisie standard
- "p> &q" fusionne la sortie du flux p avec le flux q
- "p <&q" Fusionne l'entrée du flux p avec le flux q
Redirection de sortie
Le ‘> ‘ Le symbole est utilisé pour la redirection de sortie (STDOUT).
Exemple :
ls -al > listings
Ici, la sortie de la commande ls -al est redirigée vers le fichier "listings" au lieu de votre écran.
Remarque :"Utilisez le nom de fichier correct lors de la redirection de la sortie de la commande vers un fichier. S'il existe un fichier portant le même nom, la commande redirigée supprimera le contenu de ce fichier, puis il pourra être écrasé. »
— Si vous ne souhaitez pas qu'un fichier soit écrasé mais souhaitez 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. Mais si les configurations sonores de votre PC sont correctes, cette commande jouera le fichier music.mp3
Redirection d'entrée
Le ‘< ' le symbole est utilisé pour la redirection d'entrée (STDIN)
Cela joindrait le fichier à l'e-mail, et il serait envoyé au destinataire.
"News Today" est le sujet de l'e-mail, "[email protected]" est l'adresse e-mail et "NewsFlash" est le fichier joint.
Les exemples ci-dessus étaient simples. Examinons quelques techniques avancées de redirection qui utilisent des descripteurs de fichiers.
Descripteurs de fichiers (FD)
Sous Linux/Unix, tout est un fichier. Les fichiers réguliers, les répertoires et même les périphériques sont des fichiers. Chaque fichier a un numéro associé appelé descripteur de fichier (FD).
Votre écran a également un descripteur de fichier. Lorsqu'un programme est exécuté, la sortie est envoyée au descripteur de fichier de l'écran et vous voyez la sortie du programme sur votre moniteur. Si la sortie est envoyée au descripteur de fichier de l'imprimante, la sortie du programme aura été imprimée.
Redirection d'erreur
Chaque fois que vous exécutez un programme/une commande sur le terminal, 3 fichiers sont toujours ouverts, à savoir, entrée standard, sortie standard, 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.
Fichier | Descripteur de fichier |
---|---|
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 achemine les erreurs vers un fichier autre que l'écran.
Pourquoi la redirection d'erreur ?
La redirection des erreurs est l'une des fonctionnalités les plus populaires d'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
En utilisant le "rechercher ", nous recherchons le ". ” répertoire courant pour un fichier avec “nom " commençant par " mon “
Exemple 3
Voyons donc 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 est associé à un descripteur de fichier correspondant
- 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 descripteur de fichier 2 correspondant.