TP : Initiation Unix
ENP/ ABDELOUEL Page
13
A4 Redirections & commandes filtres
4.1 Redirection des entrées-sorties
Un grand nombre de programmes se contentent de lire un flot de donnés, de faire un traitement sur ces données et d'écrire un ot de données résultat. Ces programmes prennent donc leurs données sur l'entrée standard (périphérique logique 0), et écrivent leurs résultats sur la sortie standard (périphérique logique 1), et produisent d'éventuels messages d'erreur sur l'erreur standard (périphérique logique 2),.
Un programme qui respecte cette convention porte (dans le jargon UNIX) le terme de filtre. Il faut juste préciser qu'un filtre n'affecte pas de fichier à ces trois périphériques logiques il délégue cette responsabilité au programme qui l'appelle. Le shell a donc sa propre stratégie d'affectation des périphériques logiques quand il lance un programme. Si l'utilisateur ne précise rien :
• Le périphérique logique 0 est affécté par défaut au clavier du terminal.
• Le périphériques logiques 1 & 2 sont afféctés par défaut à l'écran du terminal.
Pour les cas où ces afféctations par défaut ne conviennent pas à l'utilisateur, le shell dispose d'un mécanisme permettant de spéciér les afféctations désirées. Ce mécanisme s'appelle la redirection des entrées-sorties.
Périphérique d'entrée standard
(par defaut le clavier) Commande
Programme Périphérique de sortie standard (par defaut l'écran)
Périphérique d'entrée
fichier / texte Commande
Programme Périphérique de sortie Fichier /texte 4.2 Notations de redirections
> nom_de_fichier
�("sortie à.)" permet de rediriger la sortie standard (1) d'une commande à partir de nom_de_fichier
< nom_de_fichier
� ("entrée de...") permet de rediriger l'entrée standard (0) d'une commande à partir de nom_de_fichier.
>> nom_de_fichier
�"Ajouter sortie à..."
Il existe une autre forme consistant à remplacer le signe > par le signe >>.
Dans ce cas,si nom_de_fichier existe, son contenu n'est pas perdu : le flot redirigé va s'écrire à la fin du fichier
Les notations de redirections peuvent apparaitre avant ou après la commande et dans n'importe quel ordre. Il est traditionnel de les mettre après la commande, et si on redirige entrée et sortie, de mettre la redirection de l'entrée, puis celle de la sortie, mais ce n'est nullement obligatoire
Exemples : commande < data_in > data_out on peut écrire indifférement:
• < data_in commande > data_out
• < data_in > data_out commande
• commande > data_out < data_in
TP : Initiation Unix
ENP/ ABDELOUEL Page
14
Exemple
bc (binary calculator), lit une ligne au terminal, interpréte cette ligne comme étant une expression à calculer, calcule l'expression et imprime le résultat sur le terminal. On peut cependant imaginer beaucoup de situation où l'on aimerait activer bc en lui faisant lire les expressions à partir d'un fichier data et afficher les résultats dans results
$ bc -l 123+456 579 12*4 48 quit
Bc < Data > Result
4.3 Communication par canal : | � - Canal, tube /Pipe
|
Commande1 | Commande 2Enchaînement de l'exécution de deux commandes Commande1 commande2 .
c’àd envoie de la sortie écran de commande1 à command2 comme entrée de clavier.
Les résultats générés par commande 1 sont transmis via le canal | de telle sorte qu’ils servent comme données d’entrée à commande 2
4.4 Commandes filtres
Les commandes filtres, permettent de produire des résultats filtrés selon des critères bien définis : Commande More, find, sort.
La commande MORE s'utilise pour visualiser le contenu de longs fichiers texte, écran par écran Commande
MORE MORE < [chemin]fichier, ou commande | MORE
La commande MORE lit les données d'entrée standard provenant d'un canal de communication ou d'un fichier redirigé et affiche un écran de données à la fois find "chemin" Recherche récursive d'un fichier spécifié par chemin
-name fichier : fichier à chercher -print : affiche le chemin trouvé
grep "chemin Affiche les lignes du fichier contenant la chaîne de caractères -i : majuscules et minuscules identiques
-n : avec numéros de lignes
Exemples
ls | more, ls *.* | find "Alilo"
envoie les sorties de la commande ls vers le filtre find qui affiche seuls les fichiers avec le mot
"Alilo". Comme il n'y a pas de > en fin de commande, la liste filtrée va à l'écran.
Entrée 1
(Clavier) Commande 1 Sortie 1
(Ecran)
Entrée 2
(Clavier) Commande 2 Sortie 2
(Ecran)
Entrée 1 Commande 1 Commande 2 Sortie 2
Canal de communication