Système d’exploitation & Mise en Œuvre
Unix
M. SELLAMI
Ecole Nationale des Sciences
de l'Informatique
TP: Travaux Pratiques UNIX N° 1
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. Ecrire une procédure SHELL copier
$ copier r1 f1 f2 ….
Publicité
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é.
8. 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).
: list
$copyall
Nom de fichier ls
Répertoire destination
carreau existant overwrite o/n : o
trefle existant overwrite o/n : o
Copie terminée !
18 fichiers copiés,
:/usr/jacquy/bin
2 fichiers non copiés
9. Ecrire une nouvelle version de cal qui :
Publicité
- 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é.
10. 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)
11. 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.
Publicité
12. 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.
13. Comment demander à grep de rechercher un texte commençant par '-'?
14. Essayer de voir ce que font les commandes grep suivantes. Vérifiez le.
grep \$
grep \\$
grep \\\$
grep '\$'
grep '\'$'
grep \\
grep \\\
grep "\$"
grep '''\$'
Publicité
grep "$"
Un fichier contenant ces commandes est un bon test
15.
$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
16. Expliquez:
$sort +0f +0 -u fichier
17. 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
18. 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.