But de la séance 1
Pour la plupart des
enseignements du M2 CCI vous utiliserez les
salles de TP du bâtiment UFR IM2AG.
Ces salles sont équipées avec des ordinateurs de type PC.
Quelque soit le système d'exploitation utilisé (Linux ou Windows), l'environnement de travail proposé permet de manipuler plusieurs fenêtres. Dans une fenêtre, on peut différencier plusieurs zones :
1.3 - Accès à à des pages
web qui vous seront utiles
Comme première manipulation
nous vous proposons de vérifier que vous savez bien accéder à
différentes ressources mises à disposition sur le web ...
EXERCICE
b. Ouvrez la page de l'UE "Programmation et Langages 1", que vous pouvez trouvez à l'aide de Google avec les mots-clés "Laurent Mounier PL1" c. Dans un autre onglet, ouvrez la page de l'emploi du temps de CCI, accessible depuis le site de l'UGA |
2 - L'interprète de commandes (shell)
Vous pouvez
ensuite ouvrir une ou plusieurs fenêtres de commandes (terminal
ou xterm) dans lesquelles vous pouvez
travailler (en utilisant les commandes Unix vues en
cours). Par défaut, ces commandes seront exécutées sur le
PC que vous avez sous les yeux. L'interprète
de commande Unix (ou shell
Unix) est un programme qui est exécuté lorsqu'on se
connecte dans l'environnement Unix. Il exécute les commandes
qui sont tapées par l'utilisateur. A chaque fois que le shell
attend une commande Unix, il le notifie en affichant un
"prompt", indiquant le numéro de la commande et le nom de la
machine (comme par exemple {1} godel).
Une commande Unix se compose
du nom de la commande (toujours en tête),
éventuellement suivi d'arguments (qui peuvent être
optionnels). Lorsque la commande saisie est incorrecte (ou
qu'elle ne peut être exécutée) un message d'erreur est
affiché. Il précise en général la nature de l'erreur :
EXERCICE
|
3 - Manipulation de fichiers au travers du shell
3.1 Répertoire de travail
(home directory)
Quand vous vous connectez dans un environnement Unix, vous
vous retrouvez dans un environnement de travail composé d'un
répertoire qui vous est propre et d'informations vous
concernant (nom d'utilisateur, droits, etc). Chaque connexion
vous placera toujours dans ce même environnement.
Pour l'instant, nous allons
nous intéresser à la notion de répertoire. Un répertoire
contient un ensemble de fichiers et/ou de répertoires, un
fichier étant composé d'un nom et d'un ensemble de données
stockées sur disque. Vu par l'utilisateur, le système de fichiers est
donc organisé comme une arborescence dont les nœuds sont des
répertoires et les feuilles des fichiers simples.
3.2 Désignation des
fichiers et répertoires
Un fichier ou répertoire est désigné au moyen d'un chemin
d'accès, qui indique sa position dans l'arborescence globale. La
racine de cette arborescence, notée / (se prononce slash), est un
répertoire qui contient tous les fichiers et répertoires gérés par le serveur. Il existe deux moyens de désigner des objets
(fichiers ou répertoires) dans une arborescence : la
désignation absolue et la désignation relative.
Par
exemple, si l'on se trouve dans le répertoire de nom absolu /a/u1/durand/CCI/Programmes,
alors :
3.3 Changement de
répertoire courant
Au moment de votre connexion, vous vous retrouvez dans votre répertoire principal (qui
est à ce moment votre répertoire courant). Vous pouvez
changer de répertoire courant via la commande cd (Change
Directory).
En tapant cd nom_rep, (nom_rep étant un nom absolu ou relatif de répertoire), votre répertoire courant devient nom_rep.
La commande cd sans
arguments permet de revenir à tout moment à votre répertoire
principal.
La commande cd
~nom_utilisateur permet d'aller, si les droits le
permettent, au répertoire principal de l'utilisateur donné.
La commande cd /
permet d'aller au sommet de l'arborescence.
La commande cd ..
permet de remonter au répertoire père du répertoire courant.
Comme dit précédemment, quelque soit le répertoire courant, la
chaîne ".." désigne en effet toujours le répertoire
père.
3.4 Connaissance du
répertoire courant
La commande pwd (print working directory) permet de
savoir dans quel répertoire courant on se situe à un instant
donné (cette commande affiche le nom absolu du
répertoire courant).
EXERCICE
b. Remontez dans l'arborescence à l'aide de la commande cd .. En combien d'étapes atteignez vous le répertoire racine ? Que se passe t-il si vous tapez cd .. dans ce répertoire racine ? c. Revenez à votre répertoire principal avec la commande cd (sans arguments) |
3.5 Copie de fichiers
et répertoires
La commande cp permet de copier le contenu d'un
fichier dans un autre. Par exemple cp f1 f2 copie le
contenu de f1 dans un fichier f2. Plusieurs situations
sont possibles :
La commande cp, utilisée avec l'option -r, comme dans cp -r r1 r2, permet de copier le contenu du répertoire r1 (c.a.d l'arborescence complète des répertoires et fichiers qu'il contient). On parle parfois de copie récursive. Là encore, plusieurs situations possibles :
Exemples utiles :
3.6 Consultation
d'un répertoire
La commande ls (list directory)permet de lister le
contenu d'un répertoire.
Cette commande, comme presque toutes celles du shell unix, a
la possibilité d'être utilisée avec des options qui peuvent se
combiner et permettent de la spécialiser. Par exemple :
EXERCICE
cp -r ~mounlaur/CCI_PL1/Rentree1/PL1 . (n'oubliez pas ce "." qui signifie le répertoire courant !).
|
3.7 Complétion
Il s'agit d'un moyen qu'offre l’interprète de commandes pour compléter automatiquement (à partir d'un préfixe saisi ou clavier) les noms de commandes ou fichiers/répertoires intervenants dans une commande shell. Selon les serveurs utilisés la complétion de commande peut être obtenue soit avec la touche Tab (Tabulation), soit par un Ctrl-D (touches Ctrl et D enfoncées simultanément).
Par exemple, si l'on tape ls ~durand/sean suivi de Tab, l’interprète remplace cette commande par ls suivi de l'ensemble des noms de fichiers ou de répertoires qui se trouvent sous le répertoire ~durand et dont le nom commence par sean. De même si l'on tape l suivi de Tab, l'intreprète propose tous les noms de commande débutant par l.3.8 Création de
répertoire
Pour créer un répertoire de nom nomrep, il faut
utiliser la commande mkdir nomrep. Le répertoire créé
permettra de stocker des fichiers ou des répertoires.
3.9 Renommer ou déplacer
un fichier ou répertoireLa commande mv permet de changer le nom
d'un fichier (ou répertoire) ou dans certains cas de le
déplacer.
Par exemple, mv f1 f2 aura pour effet :
EXERCICE
b. Créez un répertoire de nom Programs c. Déplacer le fichier de nom hello.c (qui se trouve sous votre répertoire Rentree1) dans le répertoire Programs d. Renommez le fichier de nom hello.c en hello2.c |
3.11 Destruction d'un répertoire
On peut détruire des
répertoires par rmdir (remove directory). Cette
commande implique que les répertoires à détruire soient vides
(attention aux fichiers "cachés" dont le nom commence par un
point).
EXERCICE
|
3.12 Consultation du
contenu d'un fichier
Pour visualiser le contenu
d'un fichier qui contient du texte, il existe la commande cat.
Cette commande est utilisée en fournissant en paramètre le(s)
nom(s) du ou des fichiers que l'on souhaite visualiser. Dans
notre environnement, si le fichier dépasse en longueur la
taille de la fenêtre, il faut utiliser l'ascenseur situé
verticalement sur le coté de la fenêtre.
Pour visualiser plus facilement les fichiers de grande taille, il existe une autre commande appelée more. Cette commande affiche le fichier page par page, une page correspondant à la quantité de données visualisable dans la fenêtre courante. Les commandes suivantes sont disponibles :
EXERCICE
|
4. Droits associés aux
fichiers et répertoires
Les fichiers et répertoires
sont associés à des droits de manipulation qui dépendent de
l'utilisateur courant.
Tout utilisateur possédant un compte (ou login) sur une machine Unix est identifié au niveau du système par son nom de login, qui est unique. En outre, afin de pouvoir classifier les utilisateurs et leur donner des droits d'accès en fonction de leur rôle, ceux-ci appartiennent à des groupes. Le système Unix permet de restreindre les droits d'accès à un fichier ou répertoire en fonction du groupe de l'utilisateur courant. Ces droits peuvent être modifiés par le propriétaire du fichier ou répertoire (ou par l'administrateur de la machine, via le compte spécial appelé root).
L'ensemble des informations associées à un fichier ou répertoire sont fournies par la commande ls -l, comme indiqué sur l'exemple suivant (de gauche à droite) :
EXERCICE
|
5. Les manuels en ligne
Il est possible, par la commande man, d'obtenir des informations sur le fonctionnement d'une commande (en particulier, sur les options disponibles). Pour ceci, il faut taper man numéro-du-manuel nom-de-la-commande. Le numéro du manuel est optionnel. La commande particulière man intro donne la liste des commandes disponibles. Les manuels sont organisés de la manière suivante :
EXERCICE Regardez les explications associées dans ce manuel en ligne à différentes commandes connues (par exemple, ls, cp, chmod). |
6. L'éditeur de texte gedit
Avec l'environnement Unix, un éditeur assez simple d'utilisation pour écrire des programmes est gedit (on peut également utiliser nedit). Pour lancer cet éditeur, il suffit de taper gedit au niveau du shell. On peut d'ailleurs appeler gedit avec un ou plusieurs fichiers initiaux (gedit peut manipuler plusieurs fichiers en parallèle, dans une ou plusieurs fenêtres).
Dans une fenêtre gedit :
EXERCICE
|
EXERCICE
Indications : |
La commande ls peut également avoir un ou plusieurs noms d'objets en paramètre. Par exemple, ls exemple.texte affiche le nom de l'objet du répertoire courant (qui est exemple.texte) s'il existe dans le répertoire courant, sinon il indique qu'aucun objet de ce nom n'existe dans le répertoire courant. De même que pour toutes les commandes qui acceptent des listes de noms en paramètre, on peut utiliser des caractères spéciaux pour faciliter l'écriture de la commande.
EXERCICE
|
5.
Quelques commandes utiles sur les fichiers
5.1
Recherche d'une chaîne de caractères dans un fichier
La commande grep
permet de rechercher une chaîne de caractères dans un ou
plusieurs fichiers. Plus précisément, étant donnée une chaîne
de caractères et un ensemble de noms de fichiers, grep
va rechercher (et afficher) l'ensemble des lignes de ces
fichiers qui contiennent cette chaîne. Par exemple, la
commande grep "f1" *.c affiche
toutes les lignes des fichiers suffixés par .c du répertoire courant
qui contiennent la chaîne f1
EXERCICE
b. Le fichier /etc/passwd contient la base de donnée sur les utilisateurs du système (nom, uid, gid, mot de passe, etc). En utilisant la commande grep, afficher la ligne de ce fichier vous concernant. |
La commande find noms_de_fichiers expression parcourt récursivement l'arborescence de fichiers définie par les répertoires ou fichiers fournis en paramètre, en évaluant l'expression booléenne formée à partir des opérateurs donnés ci-dessous pour chaque fichier.
-user nom d'utilisateur : vrai si le fichier appartient à cet utilisateur
-group nom_de_groupe : vrai si le fichier appartient à ce groupe
-type T : vrai si le fichier est de type T, où T est f pour fichier ordinaire, d pour répertoire.
-print : toujours vrai, permet de visualiser les fichiers consultés par la commande find
-atime n : vrai si le fichier a été accédé depuis n jours
-mtime n : vrai si le fichier a été modifié depuis n jours
-exec commande : exécute la commande donnée, qui doit se terminer par \; ( {} est le symbole à utiliser pour désigner le fichier).
EXERCICE
Cherchez tous les fichiers suffixés par ".c" dans votre répertoire personnel Que fait la commande find . -name "*.old" -exec rm {} \; ? |
5.3
Tri de fichier
L'opération de tri d'un
fichier est fournie par la commande sort. Cette
commande tri le contenu du fichier selon une ou plusieurs
clés, identifiées par leur positions dans les lignes du
fichier.
Par exemple, sort -k 3
nom_fichier, va effectuer un tri portant sur le 3ème mot
de chaque ligne du fichier nom_fichier. La comparaison
des mots s'appuie sur le codage ASCII des caractères, qui est
conforme à l'ordre lexicographique. Par défaut, le caractère
considéré comme séparateur entre mots est l'espace ou la
tabulation. Si l'on souhaite utiliser d'autres caractères,
alors il faut les spécifier avec l'option -t de la commande
sort.
Par exemple, sort -t : -k
3 nom_fichier, effectue le même tri en considérant le :
comme le caractère séparateur entre mots.
EXERCICE
|
5.4 Deux fichiers sont-ils identiques ?
La commande diff f1
f2 imprime les lignes qui diffèrent entre deux fichiers f1
et f2.
5.5 Archivage et compression de répertoires et
fichiers
L'archivage et la compression
de répertoires et fichiers peuvent être requis pour effectuer
des sauvegardes de données, ou bien pour transférer des données
structurées de grande taille sur le réseau. On peut ainsi
transmettre des données d'un utilisateur à un autre sous forme
d'archive compressée, soit en l'attachant à un message
électronique, soit en la mettant à disposition sur une page
Web. La commande tar permet de produire une archive (c'est-à-dire un
ensemble de fichiers et répertoires regroupés sous un nom de
fichier unique) à partir d'un répertoire donné :
tar -cvf nom_archive nom_répertoire
L'archive créée est un fichier qui contient toutes les données se trouvant sous nom_répertoire, et mémorise l'organisation en fichiers de ces données. La commande qui permet de reproduire cette organisation à partir de l'archive est la suivante :
tar -xvf nom_archive
La compression est un mécanisme qui permet de réduire la taille mémoire occupée par des données en leur appliquant un algorithme de compression. La commande gzip permet de compresser un fichier.
gzip nom_fichier
produit
le fichier compressé de nom nom_fichier.gz
gunzip
nom_fichier.gz reproduit le fichier nom_fichier
|
6 -
Accès aux fichiers depuis une session Windows
Dans la zone de travail
Windows, vous pouvez aussi accéder à votre environnement Unix,
c'est à dire à vos répertoires et fichiers, en cliquant sur
l'icône Poste de travail puis sur l'icône votre-login
sur Z:. Cet environnement est le même que celui
accessible sous Unix. Si vous modifiez cet environnement sous
Windows, les changements seront visibles sous Unix, et
inversement.
EXERCICE
À l'aide des menus, effectuez quelques opérations sur les répertoires et fichiers (création, copie) et contrôlez les changements sous Unix. |