Vous êtes sur la page 1sur 3

UMBB Licence Informatique (S4)

Département informatique. Systèmes d’Exploitation I

TP2 : LES ENTEES /SORTIES

Par défaut, une commande Unix lit ses données sur un fichier d’entrée standard (standard input : le
clavier) et écrit les résultats sur un fichier de sortie standard (standard output : l'écran), et également
sur un fichier standard d’erreur (standard error : l'écran). A chaque fichier standard correspond un
descripteur (ou numéro) :

– 0 : Entrée standard (Standard Input) /dev/stdin,


– 1 : Sortie standard (Standard Output) /dev/stdout,
– 2 : Sortie standard pour les messages d’erreur (Standard Error) /dev/stderr.

Entrée standard Sortie standard


stdin Commande stdout
0 1

stderr
Sortie d’erreur 2

On peut rediriger séparément chacune des trois entrées/sorties standards d’une commande. Cela
signifie qu’une commande pourra

– lire les données à traiter à partir d’un fichier et non du clavier de l’utilisateur, et
– écrire les résultats ou erreurs dans un fichier et non à l’écran ;
Si command est une commande quelconque, il est possible de rediriger son entrée standard sur le
fichier fic grâce à la syntaxe command < fic, ou de rediriger sa sortie standard vers fic grâce à la
syntaxe command > fic.
1. Créer le fichier note.cvs contenant les notes des élèves d'une classe à un contrôle:
Ahmed, 18/20, excellent travail
Amina, 3/20, nécessite beaucoup d’efforts
Nadia, 14/20, en nette progression
Ali, 9/20, presque la moyenne !
Réda, 11/20, pas mal mais peut mieux faire
Mustapha, 20/20, toujours parfait
Imene, 5/20, en grave chute
2. Afin d'avoir la liste des noms de tous les élèves présents à ce contrôle tapez :
cut -d , -f 1 notes.csv

3. Supposons que nous souhaitions garder la liste des élèves présents au contrôle. Rediriger le résultat de
la commande précédente dans le fichier eleves. Pour cela, tapez :
cut -d , -f 1 notes.csv > eleves

4. Rediriger le résultat dans /dev/null. C'est un peu le « trou noir » de Linux : tout ce qui va là-dedans
disparaît immédiatement.
5. Rediriger le résultat de la même commande à la fin du fichier eleves (command >> fic)
6. Triez et supprimez les doublons du fichier eleves resultat (utilisation de sort puis uniq).
7. Tapez la commande :
cut -d , -f 1 fichier_inexistant.csv > eleves
Que remarquez-vous ?
UMBB Licence Informatique (S4)
Département informatique. Systèmes d’Exploitation I

8. Afin de pouvoir analyser les erreurs ultérieurement on peut les rediriger vers un fichier a part,
Pour cela, on utilise l'opérateur : 2>. Tapez:
cut -d , -f 1 fichier_inexistant.csv > eleves 2> erreurs.log
Remarque : Il y a deux redirections ici :
 > eleves: redirige le résultat de la commande (sauf les erreurs) dans le fichier eleves. C'est la
sortie standard ;
 2> erreurs.log : redirige les erreurs éventuelles dans le fichier erreurs.log. C'est la sortie
d'erreurs.
Notez qu'il est aussi possible d'utiliser 2>> pour ajouter les erreurs à la fin du
fichier.

9. Pour fusionner les sorties dans un seul fichier utiliser : 2>&1.


Essayez donc :
cut -d , -f 1 fichier_inexistant.csv > eleves 2>&1

10. Rediriger maintenant les deux sorties à la fin du fichier eleves.


11. Le double chevron ouvrant << vous permet d'envoyer un contenu à une commande avec votre clavier.
Tapez :
sort -n << FIN

Comme sort -n sert à trier des nombres, on va justement écrire des nombres, un par ligne (en
appuyant sur la touche Entrée à chaque fois). Lorsque vous avez fini, tapez FIN pour arrêter la saisie.
(Cela vous évite d'avoir à créer un fichier si vous n'en avez pas besoin)
Vous pouvez faire la même chose avec une autre commande, comme par exemple wc pour compter le
nombre de mots ou de caractères. Essayez :
wc -m << STOP
> Combien de caractères dans cette phrase ?
> STOP

 Vous pouvez tout à fait combiner ces symboles avec ceux qu'on a vus précédemment. Par
exemple :
sort -n << FIN > nombres_tries.txt 2>&1

12. « Chaîner des commandes » signifie connecter la sortie d'une commande à l'entrée d'une autre
commande. Le symbole :|(le pipe) permet de le faire.
Pour avoir la liste des élèves triée il suffit de connecter cut à sort comme suit :

cut -d , -f 1 notes.csv | sort

Le pipe effectue la connexion entre la sortie de cut (des noms dans le désordre) et l'entrée de sort.

14. La commande du (disque usage) permet d'obtenir la taille de chacun des sous-répertoires du répertoire
courant. Placer vous dans votre home ensuite tapez :

du
Cette liste est parfois très longue et n'est pas triée. Pour avoir cette liste du plus grand au plus petit,
tapez:
du | sort –nr

15. Connecter cette sortie à head afin de filtrer uniquement les premières lignes qu'elle reçoit. Tapez
donc :
du | sort -nr | head

16. Connecter cette sortie à less afin d’afficher les résultats page par page.

Exercice :
1) Documentez-vous sur la commande grep.
UMBB Licence Informatique (S4)
Département informatique. Systèmes d’Exploitation I

2) Que fait la ligne de commande ls /usr/bin | grep em ?


3) Triez le contenu de votre répertoire personnel (home directory) par ordre alphabétique.
4) En une seule commande composée, cherchez dans /bin tous les noms des fichiers contenant la lettre
a et triez-les par ordre alphabétique inverse.

Vous aimerez peut-être aussi