Concepts de base

publicité
Introduction aux systèmes d’exploitation (IS1)
Concepts de base
1
Ressources bibliographiques
Voici une courte liste de documents pouvant vous aider à suivre ce module. Elle n’est
bien entendu pas exhaustive, et l’Internet regorge de sites explicatifs, tutoriels et autres
notes de cours sur les systèmes d’exploitation. Nous vous recommandons tout de même
les quelques références suivantes.
Livre : « Unix, programmation et communication », par J.-M. Rifflet et J.-B. Yunès, Dunod.
Livre très complet sur Unix, va bien au-delà du cadre de ce module mais peut servir
de référence et de source d’exercices et d’exemples.
Notes de cours : http://www-gtr.iutv.univ-paris13.fr/Cours/Mat/Systeme/
Tutoriel : http://w3.uqah.uquebec.ca/DOC/index-unx.html
Aide-mémoire : http://devernay.free.fr/cours/unix/unixref.html
Manuel FreeBSD : http://www.freebsd.org/doc/fr_FR.ISO8859-1/books/handbook/
2
Organisation des données
Fichiers et répertoires
Sous Unix (comme sous la majorité des systèmes d’exploitation), les données (sur le
disque dur, un cd-rom, une clef USB, ...) sont organisées selon les notions de répertoire et
fichier. Les fichiers contiennent les données ; ils peuvent contenir des textes en clair (courriers, textes sources des programmes, etc...) ou encore un programme exécutable. Les
répertoires permettent d’organiser les fichiers sur l’espace du disque dur. Ils contiennent
aussi bien des fichiers que des sous-répertoires. On obtient ainsi une structure hiérarchique.
Les noms de fichiers et de répertoires peuvent contenir à peu près tous les caractères
et distinguent les majuscules des minuscules. Mais certains caractères sont plus pénibles
que d’autres. Le caractère espace, par exemple, sert de séparateur et ne peut donc être
utilisé dans un nom de fichier que « protégé » par le caractère backslash (\). D’autre part,
les fichiers et répertoires dont le nom commence par le caractère point (.) sont appelés
cachés et ni la commande de listage des fichiers (ls) ni le gestionnaire de fichiers de KDE
ne les afficheront par défaut.
1
Structure arborescente des données
On peut comparer les répertoires à des boîtes dans lesquelles on peut classer des objets, i.e les fichiers, et aussi y stocker d’autres boîtes dans lesquelles sont classés d’autres
objets. Cette représentation de l’arborescence nous montre que, pour retrouver un fichier,
il est nécessaire de connaître son chemin d’accès. Ce dernier représente la succession des
répertoires à parcourir pour accéder au fichier (navigation dans l’arbre). Les répertoires
sont séparés par un slash (/) dans l’écriture du chemin (il sert par conséquent aussi à représenter la racine).
Exemple d’arborescence sous Unix :
/
bin
.
.
.
home
etu1
.bashrc
etu2
tp1.ps
...
tmp
users
.
.
.
.
.
.
...
tp2.ps
Quelques définitions :
Répertoire courant On appelle répertoire courant celui dans lequel on se trouve à un
instant donné durant la navigation dans le système de fichiers. Il est noté point (.)
Répertoire parent Le répertoire parent est celui hiérarchiquement immédiatement supérieur à celui courant. Il est noté « point point » (..)
Répertoire racine C’est le répertoire le plus haut de l’arborescence. Il est représenté par /
et est le seul répertoire qui n’a pas de parent (ou pour être exact, dont le parent est
lui-même).
Répertoire personnel (ou home directory) Chaque utilisateur a un répertoire maison.
C’est le répertoire dans lequel vous vous trouvez lorsque vous ouvrez un shell. C’est
le répertoire où vous pouvez/devez mettre vos fichiers personnels. C’est en général
le répertoire /home/<nom d’utilisateur> et il peut toujours être désigné par le
caractère tilde (˜).
Chemin absolu Le chemin absolu désigne la succession des répertoires à parcourir depuis
la racine pour accéder au fichier spécifié.
Exemple : /home/etu2/tp1.ps pour accéder au fichier tp1.ps du système de fichier
quel que soit l’endroit où on se trouve dans le système (représenté dans le schéma
plus-haut).
Chemin relatif Le chemin relatif désigne la succession des répertoires à parcourir depuis
le répertoire courant pour accéder au fichier spécifié.
Exemple : ../etu1/.bashrc pour accéder au fichier .bashrc lorsqu’on se trouve
dans le répertoire etu2. La présence du répertoire parent dans ce chemin relatif
permet de remonter dans l’arbre.
2
3
Commandes shell les plus courantes
Dans la liste de commandes qui suit, fic et rep désignent des fichiers ou des répertoires
via leur chemin relatif ou absolu.
man (manual) : man commande
Peut-être la plus importante de toutes étant donné qu’elle explique le fonctionnement de toutes les autres et permet d’en connaître les options.
pwd (print working directory) : pwd
Affiche le chemin absolu du répertoire dans lequel vous vous trouvez.
cd (change directory) : cd rep
Change le répertoire courant.
ls (list) : ls rep
Permet d’afficher le contenu d’un répertoire. Sans argument, elle affiche le contenu
du répertoire courant.
cp (copy) : cp fic1 . . . ficn rep
Copie les fichiers fic1 . . . ficn dans le répertoire rep.
mv (move) : mv fic1 . . . ficn rep
Déplace les fichiers fic1 . . . ficn dans le répertoire rep. On se sert aussi de cette
commande pour renommer un fichier (mv ancien nouveau).
rm (remove) : rm fic1 . . . ficn
Détruit les fichiers fic1 . . . ficn . Attention, par défaut aucune confirmation de suppression ne vous est demandée quand vous utilisez cette commande.
mkdir (make directory) : mkdir rep1 . . . repn
Crée les répertoires rep1 . . . repn .
rmdir (remove directory) : rmdir rep1 . . . repn
Détruit les répertoires rep1 . . . repn à condition que ceux-ci soient vides.
cat (catenate) : cat fic1 . . . ficn
Affiche le contenu des fichiers texte fic1 . . . ficn . Ne fonctionne pas sur des fichiers
de données (dits binaires).
less : less fic1 . . . ficn
Similaire à cat mais bien plus pratique pour les fichiers longs. Permet aussi de faire
des recherches dans le texte.
4
Quelques conseils
L’utilisation de * (wildcard). On a souvent besoin de manipuler plusieurs fichiers ou
répertoires en même temps, par exemple lorsque l’on veut déplacer tous les fichiers d’un
répertoire. Le « tous » se traduit dans les commandes par l’utilisation du caractère *. Par
exemple, pour déplacer tous les fichiers du répertoire rep1 dans le répertoire rep2, on
écrira mv rep1/* rep2.
3
L’utilisation de &. Vous l’avez peut être remarqué, quand on lance un programme
comme Emacs à partir du shell, il est impossible d’interagir à nouveau avec le shell tant
que le programme n’est pas terminé. Pour éviter cela, il suffit de rajouter & à la fin de la
commande. Essayez.
Copier/coller. Copier du texte sous Unix est assez facile puisque sélectionner du texte
avec la souris, c’est déjà le copier. Pour le coller, il suffit de se positionner au dessus de la
zone désirée et d’appuyer sur le bouton du milieu.
NB : En général, un double clic du bouton gauche sur une chaîne de caractères la
sélectionne en entier et donc la copie par la même occasion. De même, un triple clic
sélectionne la ligne complète.
La complétion automatique. De l’anglais completion : en appuyant sur la touche Tab,
votre shell va tenter de compléter pour vous la ligne de commande que vous êtes en
train de taper (commande elle-même ou argument). Dans le cas où plusieurs complétions
sont possibles, la commande ne sera pas complétée, mais un second appui sur la touche
Tab permet d’afficher la liste des possibilités. Ceci évite en particulier de faire des fautes
d’orthographe dans les noms de fichiers.
Historique (flèche vers le haut). Les shells modernes ont tous la possibilité d’avoir
l’historique des commandes tapées. En utilisant les touches fléchées (haut et bas), on
remonte dans l’historique des commandes déjà entrées. Il suffit alors de les valider avec la
touche Enter ou de les modifier (flèches gauche ou droite et touche backspace).
Interrompre une commande. L’utilisation simultanée des touches Ctrl + c permet
d’interrompre la commande en cours d’execution. Celle-ci est intérrompue et le terminal
affiche une nouvelle invite : vous pouvez alors taper une nouvelle commande.
5
Emacs : un puissant éditeur de texte
L’éditeur Emacs est un éditeur de texte aux nombreuses fonctionnalités, mais il est
parfois difficile de s’habituer à son ergonomie. Voici une courte liste de commandes qui
peuvent vous aider.
Nous noterons « C-touche », le fait de maintenir appuyée la touche Ctrl pendant qu’on
appuie sur la touche <touche>. Les commandes de base sont les suivantes :
C-x C-c quitter emacs.
C-x C-f ouvrir un fichier.
C-x C-w sauvegarder un fichier en précisant son nom.
C-x C-s sauvegarder un fichier sous son propre nom.
C-e aller à la fin de la ligne courante.
C-a aller au début de la ligne courante.
4
Téléchargement