Vous êtes sur la page 1sur 3

Ecole Nationale des Sciences

de l'Informatique
Travaux Pratiques N1 Laboratoire Unix
M. SELLAMI
1. Essayer $`date`
et expliquez le rsultat.
2. Si les \ sont omis dans
$echo `echo \`date \``
que se passe-t-il?
3. Ecrire une commande lsdir qui affiche la liste des sous-rpertoires d'une rpertoire donn (par dfaut le
rpertoire courant).
4. Ecrire une nouvelle version de lsdir qui peut admettre plusieurs arguments: on affiche la liste des sous-
rpertoires des rpertoires donns 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 rpertoires du sous-arbre courant.
7. Essayer de voir ce que font les commandes grep suivantes. Vrifiez le.
grep \$ grep \\
grep \\$ grep \\\
grep \\\$ grep "\$"
grep '\$' grep '''\$'
grep '\'$' grep "$"
Un fichier contenant ces commandes est un bon test

8. Ecrire une procdure SHELL copier


$ copier r1 f1 f2 .
qui deplacent les fichiers f1 f2 dans un rpertoire r1 . Les paramtres sont le nom du rpertoire suivi d'un
nombre quelconque de fichiers. Si le rpertoire nexiste pas, il sera cr. Si le fichier existe dja, il ne sera pas
immdiatement cras.

9. Comment demander grep de rechercher un texte commenant par '-'?

10. Ecrire un script shell copyall qui, partir d'un fichier donn gnr par la commande ls, copie les fichiers
mentionns dans le fichier ls vers un rpertoire spcifi.
Si le rpertoire de destination n'existe pas, il sera cr (aprs eventuelleement confirmation).
copyall comporte aussi une option "overwrite o/n" pour les fichiers existants et indique le nombre de fichiers
copis (et, eventuellemnt le nobre de fichiers pour lesquels la copie n'a pas t possible).

$copyall
Nom de fichier ls : list
Rpertoire destination :/usr/jacquy/bin
carreau existant overwrite o/n : o
trefle existant overwrite o/n : o
Copie termine !
18 fichiers copis, 2 fichiers non copis
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 lexemple suivant la commande pick valide interactivement sa liste dargument. Essayer de lcrire.
Que se passerait-il si la dernire 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
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 systme concernant root sur un
fichier pro1 et les autres sur un fichier pro2.
17. Ecrire une nouvelle version de cal qui :
- reconnat un mois par son nom ;
- imprime le calendrier du mois courant ou l'anne, suivant ce qui lui est fourni, si un seul argument n'est
spcifi;
- imprime le calendrier du mois en cous si aucun argument n'est spcifi.
18. Modifier cal pour accepter plus d'un mois, comme :
$cal oct nov (novembre et dcembre)
ou encore
$cal oct - dec (novembre jusqu' dcembre)
19. Ecrire une commande shell permettant de renommer une liste de fichiers du catalogue de travail. On
supposera que les rfrences de fichiers changer sont donnes en paramtres de la commande et plus
prcment sont tous les paramtres partir du second. Les nouvelles rfrences seront obtenues partir du
prfixe 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 : com f g h i j renommera respectivement g, h i et j en f1 , f2, f3
On veillera ce que la commande ne renomme que les fichiers ordinaires; on dcidera que si la commande n'a
qu'un seul paramtre tout le catalogue de travail est trait.
Enfin, on supposera pour simplifier qu'aucun nouveau nom n'est une rfrence d'un fichier du catalogue.
20. Ecrire une commande shell liens qui appele sous la forme liens ref1 ref2 affiche tous les liens du fichier
ref1 dans le catalogue ref2 (c'est--dire toutes les rfrences correspondant au mme i-noeud). Dans le cas o le
second argument est omis on considrera 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 ralisear ce travail en recherchant les rfrences dans le sous-arbre
de l'arbre des fichiers commenant en le catalogue donn. On donnera le sous-arbre de l'arbre des fichiers
commenant en le catalogue donn. On donnera enfin la commande simple utilisant find pour raliser ce
traavail.

Vous aimerez peut-être aussi