ESIEE I3 IN301/IN3ST01 

Systèmes d'exploitation - UNIX

TD: grep/make/bash

Environnement de dévelopement: make et gcc

La commande 'make' permet de compiler un programme dont le source est réparti sur plusieurs fichiers. Pour une description simple et complète de make et des makefiles, on peut lire la page suivante ou encore celle-là. Un document d'introduction aux outils de développement GNU est par exemple : gnudev-introduction.pdf. Nous allons faire un (tout petit) projet contenant 3 fichiers (2 .c et 1 .h), qui fera une commande bonjour dont la syntaxe est bonjour 'n', où 'n' est un entier.

1. Ecrire un fichier .c contenant la fonction 'affiche' qui prend un nombre 'n' en paramètre, et affiche sur la console 'n' fois bonjour. Ecrire un fichier .h contenant le prototype de la commande 'affiche'.

2. Ecrire un fichier .c contenant un 'main', qui fera un appel à la fonction 'affiche' pour réaliser la commande 'bonjour'. Attention: il vous faut connaître la fonction 'atoi' (voir le man), et les paramètres 'argc' et 'argv' de 'main' (voir par exemple main).

3. Ecrire le Makefile qui va avec les fichiers précédents.

Expressions régulières (commandes utilisées : wc, grep, sort)

Le fichier dept est un fichier texte extrait d'une base de données. Le but de l'exercice est d'apprendre à faire quelques manipulations sur un tel fichier.

4. Affichez le fichier dept et analysez sa structure.

5. Comptez le nombre de lignes dans le fichier dept.

6. Affichez les lignes qui contiennent le mot Saint. Avez-vous la Seine-Saint-Denis ?

7. Affichez toutes les lignes par ordre de numéro de département. Avez-vous réglé le problème corse ? (problème difficile)

8. Affichez toutes les lignes qui contiennent le nom d'un fleuve (Rhin, Rhône, Seine, Loire, Garonne)

9. Affichez toutes les lignes se terminant par une consonne

10. Affichez toutes les lignes des département dont le nom est en exactement 3 mots. Avez-vous le Val d'Oise, la Côte d'Or ? Avez-vous évité les Alpes-de-Haute-Provence ?

11. Affichez les lignes par ordre alphabétique de département.

Shell script à écrire

12. Écrire un shell script BASH permettant de repérer les fichiers en double (numéro d'inode différent, contenu identique) dans le répertoire fourni en argument.