Séance 2 : Système de fichiers§

Creative Commons License Ce travail est sous licence Creative Commons Attribution-ShareAlike 3.0 France.

1

Généralités§

Points communs avec Windows :

2

Généralités§

Différences avec Windows :

3

Hiérarchies multiples sous Windows§

_images/hierarchie_dos.png
4

Hiérarchie unique sous Linux§

_images/hierarchie_unix.png
5

Chemins absolus et relatifs§

Note

  • sous Linux les noms de fichier n'ont pas forcément d'extension
  • l'extension n'a pas de rôle particulier pour le SE
  • on verra plus loin comment fonctionnent . et ..

Note

Un petit jeu développé par Tierry Excoffier vous permet de vous entraîner à écrire des chemins relatifs et absolus (et à la Tab-complétion).

6

Répertoire courant§

Tout processus (programme en cours d'exécution), y compris le shell, possède un répertoire courant.

Ce répertoire courant sert à résoudre les chemins relatifs utilisés par ce processus.

7

Commandes usuelles§

8

pwd — print working directory§

Affiche le répertoire courant du shell.

NB: le répertoire courant est « hérité » par les programmes lancés depuis le shell.

Note

Souvent, le répertoire courant apparaît dans l'invite de commande.

9

cd <dir> — change directory§

Change le répertoire courant du shell.

<dir>

Chemin absolu ou relatif du répertoire destination.

10

ls [options] [path]... — list§

Affiche une liste de fichiers (par défaut, ceux du répertoire courant).

[path]

Chemin du/des fichier(s) à afficher. Si path identifie un répertoire, ls affiche les fichiers contenus dans ce répertoire.

-a, --all

Affiche tous les fichiers, y compris les fichiers cachés.

11

cp [options] <src>... <dst> — copy§

Copie un (ou plusieurs) fichier(s) vers un chemin donné.

<src>

Chemin du/des fichier(s) source(s).

<dst>

Si <dst> est le chemin d'un répertoire existant, tous les fichiers sources sont copiés dans ce répertoire, avec le même nom local.

Sinon, il ne doit y avoir qu'un seul <src>, qui est copié en tant que <dst>.

12

cp [options] <src>... <dst> — copy§

-i, --interactive

Demande confirmation avant d'écraser un fichier existant.

Avertissement

Par défaut, cp ne demande pas de confirmation.

13

mv [options] <src>... <dst> — move§

Déplace (ou renomme) un (ou plusieurs) fichier(s) vers un chemin donné.

<src>

Chemin du/des fichier(s) source(s).

<dst>

Si <dst> est le chemin d'un répertoire existant, tous les fichiers sources sont déplacés dans ce répertoire, avec le même nom local.

Sinon, il ne doit y avoir qu'un seul <src>, qui est déplacé en tant que <dst>.

-i, --interactive

Idem que pour cp.

14

rm [options] <path>... — remove§

Supprime un (ou plusieurs) fichier(s).

<path>

Chemin d'un fichier à supprimé.

Ne peut pas être un répertoire (sauf si -r est utilisé).

-I

Demande confirmation lorsque 3 fichiers ou plus vont être supprimés.

-r

Si <path> désigne un répertoire, supprime récursivement son contenu.

15

rmdir <dir>... — remove directory§

Supprime un (ou plusieurs) répertoire(s) vide(s).

16

Méta-données et permissions§

D'une manière générale, on appelle méta-donnée toute information attachée à une donnée.

Tout fichier possède les méta-données suivantes :

17

Permissions§

Elles sont codées sur 12 bits, chacun représentant un droit particulier.

Note

  • Les bits marqués "..." sont moins utilisés, et ne sont pas traités dans ce cours.
  • Pour un répertoire, le droit en « exécution » est le droit d'en faire le répertoire courant, et d'accéder aux fichiers qu'il contient.
  • On représente souvent les permissions sous forme d'un nombre de 3 chiffres en octal.
18

Afficher les méta-données§

Nouvelle option de ls:

-l

Affiche les méta-données des fichiers en plus de leur nom.

Exemple :

$ ls -l

total 12
-rw-r--r-- 2 pa   pa          7 janv. 21 11:01 bar
drwxrwxrwx 3 root pa       4096 janv. 21 12:05 data
-rw-rw---- 1 pa   www-data   64 janv. 21 11:52 toto
19

chown [options] [<user>][:<group>] <path>...§

Change le propriétaire et/ou le groupe d'un (ou plusieurs) fichier(s).

<user>

L'identifiant (textuel ou numérique) du nouveau propriétaire.

<group>

L'identifiant (textuel ou numérique) du nouveau groupe.

<path>

Le chemin du fichier dont on souhaite modifier les méta-données.

20

chown [options] [<user>][:<group>] <path>...§

-R, --recursive

Si <path> identifie un répertoire, change récursivement les méta-données des fichiers qu'il contient.

21

chmod [options] <perm> <path>...§

Change les permissions associées à un (ou plusieurs) fichier(s).

<perm>
  • la description en octal des nouvelles permissions, ou
  • une description des modifications à apporter où
    • u, g, o désignent respectivement le propriétaire (user), le groupe, ou les autres utilisateurs (others), a (all) est un alias pour ugo,
    • + ajoute une permission pour les cibles concernées, - retire une permission pour les cibles concernées,
    • r, w, x désignent respectivement des droits en lecture (read), écriture (write), exécution.
  • exemples : 777, 640, ug+x, o-rwx
22

chmod [options] <perm> <path>...§

<path>

Le chemin du fichier dont on souhaite modifier les permissions.

-R, --recursive

Si <path> identifie un répertoire, change récursivement les méta-données des fichiers qu'il contient.

Note

Seul l'administrateur a le droit de modifier le propriétaire.

23

Liens physiques§

Sous Linux, il est possible que le même fichier (données + méta-données) existe sous plusieurs chemins.

Si on change les données depuis un des chemins, ces changements sont également visibles depuis les autres chemins.

On dit qu'il existe un lien physique entre ces chemins. La commande ls -l affiche le nombre de liens phyiques pour chaque fichier.

Note

Chaque répertoire contient toujours deux liens physiques cachés :

  • . est un lien physique vers le réperoire lui même ;
  • .. est un lien physique vers le répertoire parent.

Ces liens physiques sont utiles pour écrire des les chemins relatifs.

24

Créer un lien physique§

Avec cp:

cp -l src dest

Avec ln:

ln src dest
25

Gestion des données§

26

Inode§

Pour le SE chaque fichier a un identifiant interne unique, partagé par tous les liens physiques vers ce fichier.

Cet identifiant est appelé numéro d'inode.

-i, --inode

Option de ls pour afficher les numéros d'inode.

27

Liens symboliques§

Un lien symbolique est un type particulier de fichier, qui contient le chemin (absolu ou relatif) d'un autre fichier.

Lorsqu'on ouvre un lien symbolique, on accède aux données du fichiers vers lequel il pointe.

Exemple :

$ ls -l

total 12
-rw-r--r-- 2 pa   pa          7 janv. 21 11:01 bar
drwxrwxrwx 3 root pa       4096 janv. 21 12:05 data
lrwxrwxrwx 1 pa   pa          4 janv. 21 12:06 tata -> toto
-rw-rw---- 1 pa   www-data   64 janv. 21 11:52 toto
28

Créer un lien symbolique§

Avec ln:

ln -s src dest
29

Gestion des données§

Contrairement au lien physique, le lien symbolique est un fichier différent du fichier vers lequel il pointe (avec son propre numéro d'inode).

Si le fichiers pointé est supprimé, le lien symbolique devient brisé (tenter de l'ouvrir provoquera une erreur).

30

Méta-caractères§

Les méta-caractères sont des caractères spéciaux interprétés par le shell.

Lorsqu'ils sont utilisés dans une ligne de commande (seuls ou en combinaison avec d'autres caractères ou méta-caractères), l'argument qui les contient est remplacé par un ou plusieurs nom(s) de fichier correspondant.

Note

Les guillemets (simples ' ou doubles ") inhibent l'interprétation de ces méta-caractères, comme ils le font pour les espaces.

31

Méta-caractères§

32

Méta-caractères§

Exemples:

ls *.c *.h

cp *.c ~/code/

chmod a-rwx solution_exo?.html
33

Échappement§

Exemples :

echo Comment allez-vous \?

echo "* et ? sont des méta caractères"
34

Travaux dirigés§

Consultez les ici

35