Vous êtes sur la page 1sur 3

Ecole Nationale des Sciences de l'Informatique

Travaux Pratiques N°1

1. Essayer $`date`

et expliquez le résultat.

2. Si les \ sont omis dans $echo `echo \`date \``

que se passe-t-il?

Laboratoire Unix M. SELLAMI

3. Ecrire une commande lsdir qui affiche la liste des sous-répertoires d'une répertoire donné (par défaut le

répertoire courant).

4. Ecrire une nouvelle version de

lsdir qui peut admettre plusieurs arguments: on affiche la liste des sous-

répertoires des répertoires donnés comme argument

5. Ecrire une commande lstree qui affiche la liste des fichiers du sous-arbre courant.

6. Ecrire une commande lstreed qui affiche la liste des répertoires du sous-arbre courant.

7. Essayer de voir ce que font les commandes grep suivantes. Vérifiez le.

grep \$

grep \\

grep \\$

grep \\\

grep \\\$

grep "\$"

grep '\$'

grep '''\$'

grep '\'$'

grep "$"

Un fichier contenant ces commandes est un bon test

8. Ecrire une procédure SHELL copier

$ copier r1 f1 f2 …. qui deplacent les fichiers f1 f2 dans un répertoire r1 . Les paramètres sont le nom du répertoire suivi d'un nombre quelconque de fichiers. Si le répertoire n’existe pas, il sera créé. Si le fichier existe dèja, il ne sera pas immédiatement écrasé.

9. Comment demander à grep de rechercher un texte commençant par '-'?

10. Ecrire un script shell copyall qui, à partir d'un fichier donné généré par la commande ls, copie les fichiers mentionnés dans le fichier ls vers un répertoire spécifié. Si le répertoire de destination n'existe pas, il sera créé (après eventuelleement confirmation). copyall comporte aussi une option "overwrite o/n" pour les fichiers existants et indique le nombre de fichiers copiés (et, eventuellemnt le nobre de fichiers pour lesquels la copie n'a pas été possible).

$copyall Nom de fichier ls

Répertoire destination

carreau existant overwrite o/n : o

trefle existant overwrite o/n : o Copie terminée !

: list

:/usr/jacquy/bin

18 fichiers copiés,

2 fichiers non copiés

11. $grep -l xxx noms_de_fichiers

donne la liste des noms de fichiers contenant xxx. Essayez de construire des commandes telles que :

$commande `grep -l xxx noms_de_fichiers`

12. Dans l’exemple suivant la commande pick valide interactivement sa liste d’argument. Essayer de l’écrire.

Que se passerait-il si la dernière ligne de la boucle $for i in `pick ch2.*`

> do

> echo $i

>diff vieux/$i $i

> done |pr | lpr

ch2.1?o

ch2.2?o

ch2.2?o

$

ci-dessous était

ch2.1?o ch2.2?o ch2.2?o $ ci-dessous était 13. Si la boucle diff est dans un fichier, y

13. Si la boucle diff est dans un fichier, y placerez-vous le pick? Pourquoi?

14. Expliquez:

$sort +0f +0 -u fichier

15. La commande de l'éditeur en flot: sed -n '/seq/p' fichier

est équivalente à grep fichier (vous pouvez le croire ou l'essayer). Trouver l'équivalent de grep pour la commande suivante:

$ grep '/seq/d' fichier

16. Ecrire une commande qui permet de ventiller (classer) les processus du système concernant root sur un

fichier pro1 et les autres sur un fichier pro2.

17. Ecrire une nouvelle version de cal qui :

- reconnaît un mois par son nom ;

- imprime le calendrier du mois courant ou l'année, suivant ce qui lui est fourni, si un seul argument n'est spécifié;

- imprime le calendrier du mois en cous si aucun argument n'est spécifié.

18. Modifier cal pour accepter plus d'un mois, comme :

$cal oct nov

(novembre et décembre)

ou encore

$cal oct - dec

(novembre jusqu'à décembre)

19. Ecrire une commande shell permettant de renommer une liste de fichiers du catalogue de travail. On supposera que les références de fichiers à changer sont données en paramètres de la commande et plus précément sont tous les paramètres à partir du second. Les nouvelles références seront obtenues à partir du préfixe commun donné en premier argument, le suffixe étant constitué par un entier compris entre 1 et n si n est le nombre de fichiers à renommer.

exemple :

On veillera à ce que la commande ne renomme que les fichiers ordinaires; on décidera que si la commande n'a qu'un seul paramètre tout le catalogue de travail est traité.

Enfin, on supposera pour simplifier qu'aucun nouveau nom n'est une référence d'un fichier du catalogue.

20. Ecrire une commande shell liens qui appelée sous la forme liens ref1 ref2 affiche tous les liens du fichier

ref1 dans le catalogue ref2 (c'est-à-dire toutes les références correspondant au même i-noeud). Dans le cas où le second argument est omis on considèrera qu'il s'agit du catalogue de travail. On pourra utiliser la commance ls avec l'option -i.

On écrira ensuite la commande liens2 qui réalisear ce travail en recherchant les références dans le sous-arbre de l'arbre des fichiers commençant en le catalogue donné. On donnera le sous-arbre de l'arbre des fichiers

com f g h i j renommera respectivement g, h i et j en f1 , f2, f3

commençant en le catalogue donné. On donnera enfin la commande simple utilisant find pour réaliser ce traavail.