Séance 2 : Système de fichiers§
Département Informatique (IUT Lyon 1)
Ce travail est sous licence Creative Commons Attribution-ShareAlike 3.0 France.
Département Informatique (IUT Lyon 1)
Ce travail est sous licence Creative Commons Attribution-ShareAlike 3.0 France.
Points communs avec Windows :
Différences avec Windows :
/
)/
)foo/bar
./toto
../images/toto.jpeg
mon_projet/.git
.
sont considérés comme cachés
(ils n'apparaissent que si on le demande explicitement)Note
.
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).
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.
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.
Change le répertoire courant du shell.
<dir>
Chemin absolu ou relatif du répertoire destination.
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.
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>
.
-i
,
--interactive
Demande confirmation avant d'écraser un fichier existant.
Avertissement
Par défaut, cp ne demande pas de confirmation.
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.
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.
Supprime un (ou plusieurs) répertoire(s) vide(s).
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 :
Elles sont codées sur 12 bits, chacun représentant un droit particulier.
Note
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
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.
-R
,
--recursive
Si <path>
identifie un répertoire,
change récursivement les méta-données des fichiers qu'il contient.
Change les permissions associées à un (ou plusieurs) fichier(s).
<perm>
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.777
, 640
, ug+x
, o-rwx
<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.
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.
Avec cp
:
cp -l src dest
Avec ln
:
ln src dest
rm
ne supprime pas directement les données ;
elle supprime le chemin, donc le lien physique.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.
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
Avec ln
:
ln -s src dest
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).
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.
*
: n'importe quelle séquence de zéro, un ou plusieurs caractère(s)?
: exactement un caractère~
: le répertoire home de l'utilisateur courant[...]
: exactement un caractère appartenant à la séquence décrite, exemples :[xyz]
: un des caractères x
, y
ou z
[^xyz]
: n'importe quel caractère autre que x
, y
ou z
[0-9]
: n'importe quel chiffre décimal[a-zA-Z_]
: n'importe quelle lettre minuscule ou majuscule, ou l'underscore.Exemples:
ls *.c *.h
cp *.c ~/code/
chmod a-rwx solution_exo?.html
"
) ou simples ('
)
pour échapper tout une chaîne ;\
) pour échapper un unique caractère.Exemples :
echo Comment allez-vous \?
echo "* et ? sont des méta caractères"