Vous êtes sur la page 1sur 3

Ecole Nationale des Sciences

de l'Informatique
Travaux Pratiques N°1 Laboratoire Unix
M. SELLAMI
1. Essayer $`date`
et expliquez le résultat.
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-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 : list
Répertoire destination :/usr/jacquy/bin
carreau existant overwrite o/n : o
trefle existant overwrite o/n : o
Copie terminée !
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
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 : 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 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
commençant en le catalogue donné. On donnera enfin la commande simple utilisant find pour réaliser ce
traavail.

Vous aimerez peut-être aussi