diff --git a/00TODO b/00TODO index 0efde30..ada03ce 100644 --- a/00TODO +++ b/00TODO @@ -85,7 +85,6 @@ cours/images/xfig.html cours/index.html cours/rcs.html cours/unix/cercles.html -cours/unix/fs.html cours/unix/imprimer.html cours/unix/jeux.html exos/contact.html diff --git a/unix/systemes_fichiers.tml b/unix/systemes_fichiers.tml new file mode 100644 index 0000000..3182e3b --- /dev/null +++ b/unix/systemes_fichiers.tml @@ -0,0 +1,252 @@ + + + +
++Les répertoires sont appelés directories en anglais. Un répertoire +est une boîte qui peut contenir des fichiers et d'autres répertoires (comme +les catalogues de MS-DOS, ou les dossiers du Macintosh). Des exemples de +répertoires : +
+ ++/users +/bin +/usr/local/bin ++ +
+On désigne les fichiers (et les répertoires) contenus dans un répertoire +par : +
+ +nom de répertoire/nom de fichier+ +
+Par exemple : /bin/sh
est le fichier sh
contenu
+dans le répertoire /bin
.
+
+Les répertoires sont organisés en arbre, c'est-à-dire qu'ils sont tous +contenus dans un répertoire appelé la racine, et désigné par "/". +Chaque répertoire contient deux répertoires spéciaux : +
+ +.
désigne le répertoire lui-même...
désigne le père du répertoire.
+Exemples :
+/users/92/.
est le même répertoire que /users/92
,
+/users/92/..
est le même répertoire que /users
.
+
+Chaque utilisateur a un home-directory, ou répertoire
+personnel. C'est l'endroit ou il range ses fichiers. Sur les machines
+de la salle S, le répertoire personnel a pour nom
+/users/année/groupe/nom-de-login
.
+
Exemples :
+/users/92/maths/vous
,
+/users/formel/doligez
.
+
+On peut aussi désigner le répertoire personneld'un autre utilisateur par le
+nom de login de l'utilisateur précédé d'un tilde (le caractère tilde).
+Exemple : ~leroy
.
+
+Un nom de fichier qui commence par /
est dit absolu.
+Il est interprété en partant de la racine, et en descendant dans l'arbre.
+Un nom de fichier qui ne commence pas par /
est
+relatif. Il est interprété en partant du répertoire
+courant. Le répertoire courant est initialement (au moment où vous vous
+connectez) votre répertoire personnel ; le répertoire courant est le
+répertoire dans lequel vous vous trouvez.
+
+Exemples :
+/users/formel/doligez/foo
est un nom (ou chemin) absolu.
+bar
est un nom relatif. Il désigne un fichier appelé
+bar
et situé dans le répertoire courant. Le fichier exact dont
+il s'agit dépend donc de votre répertoire courant.
+
+Remarque :
+Le seul caractère spécial dans les noms de fichiers est le slash
+/
. Un nom de fichier peut avoir jusqu'à 255 caractères, et
+contenir un nombre quelconque de points.
+
pwd
+Affiche le répertoire courant. +Exemple : +
+ +chaland ~ $ pwd
+/users/formel/doligez
+
+cd
+Change le répertoire courant. Si on ne lui donne pas d'argument, on +retourne dans le répertoire personnel. Exemple : +
+ ++chaland ~ $ pwd +/users/formel/doligez +chaland ~ $ cd .. +chaland /users/formel/ $ cd +chaland ~ $ pwd +/users/formel/doligez+ +
mkdir
+Crée un nouveau répertoire, (presque) vide. Il ne contient que
+.
et ..
.
+
rmdir
+Supprime un répertoire vide. Si le répertoire contient autre
+chose que .
et ..
ça ne marche pas.
+
mv
+Renomme un fichier, mais peut aussi le déplacer d'un répertoire à +un autre. Exemple : +
+ ++chaland ~ $ mkdir foo +chaland ~ $ nano bar +chaland ~ $ mv bar foo/bar2 +chaland ~ $ cd foo +chaland ~/foo $ pwd +/users/formel/doligez/foo +chaland ~/foo $ ls +bar2+ +
ls
+Liste les fichiers et les répertoires qu'on lui donne en arguments,
+ou le répertoire courant si on ne lui donne pas d'argument. ls
+ne liste pas les fichiers dont le nom commence par .
C'est
+pourquoi .
et ..
n'apparaissent pas ci-dessus.
+
+Il est parfois ennuyeux d'avoir à taper un nom complet de fichier comme
+nabuchodonosor
. Il est encore plus ennuyeux d'avoir à taper une
+liste de fichier pour les donner en arguments à une commande, comme :
+cc -o foo bar.c gee.c buz.c gog.c
. Pour éviter ces problèmes,
+on peut utiliser des jokers (wildcards en anglais).
+
+Une étoile *
dans un nom de fichier est interprétée par le shell
+comme « n'importe quelle séquence de caractères ».
+Exemple : cc -o foo *.c
.
+
+Pour interpréter l'étoile, le shell va faire la liste de tous les noms de
+fichiers du répertoire courant qui ne commencent pas par .
et
+qui finissent par .c
Ensuite, il remplace *.c
par
+cette liste (triée par ordre alphabétique) dans la ligne de commande, et
+exécute le résultat, c'est-à-dire par exemple : cc -o foo bar.c buz.c
+foo.c gee.c gog.c
.
+
+On a aussi le ?
, qui remplace un (et exactement un) caractère
+quelconque. Par exemple, *.?
liste tous les fichiers sont
+l'extension n'a qu'une seule lettre.
+
+La forme [abcd]
remplace un caractère quelconque parmi
+a
, b
, c
, d
. Enfin,
+[^abcd]
remplace un caractère quelconque qui ne se trouve pas
+parmi a
, b
, c
, d
.
+
+Exemple : echo /users/*
+affiche la même chose que
+ls /users
+(La commande echo
se contente d'afficher ses arguments.)
+
+Attention : +
+ +mv *.c *.bak
, car le shell va
+passer à
+mv
les arguments foo.c bar.c foo.bak bar.bak
, et
+mv
ne sait pas quel fichier remplacer.
+rm * ~
, le shell remplace
+l'étoile par la liste des fichiers présents, et ils seront tous effacés. Si
+vous tapez rm *~
, seuls les fichiers dont le nom finit par un
+tilde seront effacés.
+
+Interlude : comment effacer un fichier nommé ?*
? On ne peut
+pas taper rm ?*
car le shell remplace ?*
par la
+liste de tous les fichiers du répertoire courant. On peut taper rm -i
+*
qui supprime tous les fichiers, mais en demandant confirmation à
+chaque fichier. On répond no
à toutes les questions sauf
+rm: remove ?*?
. Autre méthode : utiliser les mécanismes de
+quotation (voir ci-dessous).
+