Année universitaire 2002-2003 |
Licence d'informatique
|
Durant les six séances de travaux dirigés et les trois séances de travaux pratiques portant sur le shell, on se placera dans le cadre du shell de Bourne. Or, sur marine, le shell lancé à la connexion est un tcsh. On commencera donc, lors des séances de travaux pratiques, par lancer un shell de Bourne, en tapant la commande sh dans la fenêtre racine. Le nouveau prompt sera alors un caractère $
Le shell de Bourne présente l'inconvénient de ne pas comporter les commandes d'historique des autres shells. Néanmoins, il s'agit du shell le plus communément répandu. En travaillant avec un autre shell, certaines commandes ne produiraient pas le même résultat qu'avec un shell de Bourne.
1) En utilisant la commande ls, présentée lors de la séance 11 de travaux dirigés, afficher la liste des fichiers du répertoire /users/linfg/linfg0/TD dont le nom suit l'un des deux modèles suivants :
td<numéro de séance>ex<numéro d'exercice>.txt
td<numéro de séance>ex<numéro d'exercice>.c
Il est précisé qu'un <numéro de séance> et un <numéro d'exercice> sont toujours constitués chacun de deux chiffres exactement.
2) Modifier les trois chaînes de caractères suivantes, de manière à pouvoir les afficher intégralement à l'écran, à l'aide de la commande echo :
Le métacaractère \ annihile l'évaluation du caractère immédiatement suivant, ce qui n'est intéressant que dans le cas où ce caractère est un métacaractère du shell.
pwd
Pas d'option.
$ pwd /users/linfg/linfg0/TD $ |
cd [nom_répertoire]
Lorsque la commande est tapée sans paramètre, on se positionne
dans le "répertoire principal" ("home directory").
Pas d'option.
cd ../TD
Cette commande permet de se déplacer dans l'arborescence vers le répertoire "frère" du répertoire courant, de nom TD
cf. la description de la commande cp, en tapant : man cp
Cette commande copie le fichier td12ex01.c, situé dans le sous-répertoire PREPA/TD, dans le sous-répertoire TP, sous le nom td12ex01.txt
On ne peut pas faire une copie d'un fichier dans son répertoire d'origine sans changer son nom, puisque deux fichiers "frères" ne peuvent pas porter le même nom.
cf. la description de la commande mv, en tapant : man mv
Cette commande permet de renommer TP en TP_2000, et de le "remonter" d'un étage.
Cette commande permet de déplacer dans le sous-répertoire PREPA, les fichiers du sous-répertoire TD dont le nom commence par td12ex ou td13ex, sans changer leurs noms.
rmdir [-ps] nom_répertoire [...]
cf. la description de la commande rmdir, en tapant : man rmdir
rmdir ..
Cette commande provoque systématiquement une erreur, car
le répertoire père du répertoire courant n'est jamais
vide. De même, la commande rmdir . provoquerait
une erreur, car on ne peut pas supprimer le répertoire dans lequel
on se trouve.
Taper les commandes nécessaires à la réalisation de chacune des tâches suivantes :
1) Se positionner dans le répertoire principal, et afficher le nom du répertoire courant.
2) Créer le répertoire TP8REP, et son sous-répertoire TP8SREP, en une seule ligne de commande.
3) Copier le fichier /users/linfg/linfg0/LISTES/liste.txt dans TP8SREP
4) Se positionner dans le répertoire TP8SREP, et en afficher le contenu.
5) Déplacer le fichier liste.txt de TP8SREP vers TP8REP
6) Supprimer le répertoire TP8REP, ainsi que son contenu.
more [-cdflrsuw] [-lignes] [+numéro_ligne] [+/modèle] [nom_fichier ...]
cf. la description de la commande more, en tapant : man more
La commande more `ls` affiche le contenu de tous les fichiers du répertoire courant (les sous-répertoires du répertoire courant sont ignorés).
cf. la description de la commande more, en tapant : man more
En fait, la commande more n'est pas un vrai filtre, dans la mesure où elle n'accepte de données par l'intermédiaire de l'entrée standard que si l'entrée standard a été redirigée (sur ce point, la commande more diffère de la commande cat).
Effectuer les tâches suivantes, en utilisant la commande chmod, qui est décrite dans la séance 12 de travaux dirigés :
1) Copier le fichier /users/linfg/linfg0/LISTES/liste.txt dans le répertoire principal, sous le même nom.
2) Consulter le contenu de cette copie, sans utiliser d'éditeur de texte (donc à l'aide de la commande more).
3) Contrôler les droits d'accès au fichier liste.txt, en tapant ls -l
4) S'en interdire l'accès en écriture.
5) Contrôler la modification des droits d'accès effectuée.
6) Essayer de changer un prénom dans le fichier liste.txt, à l'aide de l'éditeur de texte asedit. Sauvegarder. Quitter asedit.
7) Rétablir l'accès en écriture au fichier liste.txt pour le propriétaire.
8) Essayer à nouveau d'effectuer la modification précédente, à l'aide d'asedit. Sauvegarder.
9) Refaire la copie du fichier /users/linfg/linfg0/LISTES/liste.txt dans le répertoire principal, sous le même nom (cette copie sera utilisée dans les exercices suivants).
man [-] [-adFlrt] [-Marbre] [-Tmacro] [-ssection] nom_commande [...]
cf. la description de la commande man, en tapant : man man
La commande man fclose affiche la description de la fonction fclose
La commande head permet de récupérer les premières lignes d'un fichier. La commande tail permet de récupérer les lignes situées à la fin d'un fichier. Après avoir lancé la commande man pour chacune de ces commandes, essayer de trouver a priori ce que font les quatre commandes suivantes, puis les taper pour vérifier :
sort [-cmu] [-o sortie] [-T répertoire] [-y[mémoire]] [-dfiMnr] [-b] [-t caractère] [-k clé] [+pos1 [-pos2]] [nom_fichier ...]
Anne DUPONT 26 ans Jean DUPONT 22 ans Mathieu BARDON 23 ans |
$ sort -k 2,2 etat_civil.txt Mathieu BARDON 23 ans Anne DUPONT 26 ans Jean DUPONT 22 ans $ sort -k 2 etat_civil.txt Mathieu BARDON 23 ans Jean DUPONT 22 ans Anne DUPONT 26 ans $ |
1) Sachant que tout étudiant du module 4 a un nom d'utilisateur du type linfg<numéro>, trier le fichier liste.txt de manière à afficher la liste des étudiants du module 4 par ordre de numéros croissants. Pour éviter que le numéro 2 n'apparaisse après le numéro 19, on conseille d'écrire un script basé sur la démarche suivante :
Attention :
... EMMANUEL-EMILE CYRIL linfg151 EMRITTE MEHDI linfg22 ... |
En utilisant la commande grep, déjà présentée lors de la séance 11 de travaux dirigés :
1) Afficher la liste des étudiants du module 4 ayant LAURENT comme prénom.
2) Afficher la liste des étudiants ayant un numéro inférieur à 100.
Remarque :
3) Afficher la liste des étudiants ayant un numéro contenant un caractère 1 au moins.
4) Afficher les noms et prénoms des étudiants dont le nom ou le prénom contient un caractère H au moins.
1) À l'aide uniquement de la commande echo, et sans utilisation du caractère \n, créer le fichier tp08.txt contenant les lignes suivantes :
Est-ce que j'arrive a rediriger la sortie standard ? |
2) Déterminer a priori quel doit être le résultat de chacune des quatre commandes ci-dessous, puis contrôler :
3) Écrire une commande permettant d'afficher les lignes 5 à 10 du fichier liste.txt
4) A l'aide de la commande cut, qui a été décrite lors de la séance 12 de travaux dirigés :
Écrire les scripts permettant de réaliser les trois séquences de tâches suivantes, puis tester ces scripts :
1) script1.sh :
Vérifier que le script fonctionne bien, en contrôlant l'existence du répertoire REP et d'un fichier dans ce répertoire, dont le nom comporte l'extension .c ou .o
2) script2.sh :
3) script3.sh :
On appellera ce dernier script sur des répertoires créés à l'aide de script2.sh