Système d’exploitation & Mise en Œuvre Unix

Programming, UNIX, Shell Scripting · lab

Browse all systèmes d'exploitation et cloud documents

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 ….

Advertisement

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 :

Advertisement

  • 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.

Advertisement

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 '''\$'

Advertisement

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.