253 lines
7.3 KiB
Text
253 lines
7.3 KiB
Text
|
<?xml version="1.0" encoding="ISO-8859-1"?>
|
|||
|
<!DOCTYPE html
|
|||
|
PUBLIC "-//ENS/Tuteurs//DTD TML 1//EN"
|
|||
|
"tuteurs://DTD/tml.dtd">
|
|||
|
<html>
|
|||
|
<head>
|
|||
|
<title>Syst<73>mes de fichiers</title>
|
|||
|
</head>
|
|||
|
<body>
|
|||
|
|
|||
|
<h1>Syst<73>me de fichiers</h1>
|
|||
|
|
|||
|
<h2>Notions</h2>
|
|||
|
|
|||
|
<p>
|
|||
|
Les r<>pertoires sont appel<65>s <em>directories</em> en anglais. Un r<>pertoire
|
|||
|
est une bo<62>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<EFBFBD>pertoires<EFBFBD>:
|
|||
|
</p>
|
|||
|
|
|||
|
<pre>
|
|||
|
/users
|
|||
|
/bin
|
|||
|
/usr/local/bin
|
|||
|
</pre>
|
|||
|
|
|||
|
<p>
|
|||
|
On d<>signe les fichiers (et les r<>pertoires) contenus dans un r<>pertoire
|
|||
|
par<EFBFBD>:
|
|||
|
</p>
|
|||
|
|
|||
|
<pre><em>nom de r<>pertoire</em>/<em>nom de fichier</em></pre>
|
|||
|
|
|||
|
<p>
|
|||
|
Par exemple<6C>: <code>/bin/sh</code> est le fichier <code>sh</code> contenu
|
|||
|
dans le r<>pertoire <code>/bin</code>.
|
|||
|
</p>
|
|||
|
|
|||
|
<p>
|
|||
|
Les r<>pertoires sont organis<69>s en arbre, c'est-<2D>-dire qu'ils sont tous
|
|||
|
contenus dans un r<>pertoire appel<65> la <em>racine</em>, et d<>sign<67> par "/".
|
|||
|
Chaque r<>pertoire contient deux r<>pertoires sp<73>ciaux<75>:
|
|||
|
</p>
|
|||
|
|
|||
|
<ul>
|
|||
|
<li><code>.</code> d<>signe le r<>pertoire lui-m<>me.</li>
|
|||
|
<li><code>..</code> d<>signe le p<>re du r<>pertoire.</li>
|
|||
|
</ul>
|
|||
|
|
|||
|
|
|||
|
<p>
|
|||
|
Exemples<EFBFBD>:
|
|||
|
<code>/users/92/.</code> est le m<>me r<>pertoire que <code>/users/92</code>,
|
|||
|
<code>/users/92/..</code> est le m<>me r<>pertoire que <code>/users</code>.
|
|||
|
</p>
|
|||
|
|
|||
|
<p>
|
|||
|
Chaque utilisateur a un <em>home-directory</em>, ou <em>r<>pertoire
|
|||
|
personnel</em>. C'est l'endroit ou il range ses fichiers. Sur les machines
|
|||
|
de la salle S, le r<>pertoire personnel a pour nom
|
|||
|
<code>/users/<em>ann<6E>e</em>/<em>groupe</em>/<em>nom-de-login</em></code>.
|
|||
|
</p>
|
|||
|
|
|||
|
<p>Exemples<65>:
|
|||
|
<code>/users/92/maths/<em>vous</em></code>,
|
|||
|
<code>/users/formel/doligez</code>.
|
|||
|
</p>
|
|||
|
|
|||
|
<p>
|
|||
|
On peut aussi d<>signer le r<>pertoire personneld'un autre utilisateur par le
|
|||
|
nom de login de l'utilisateur pr<70>c<EFBFBD>d<EFBFBD> d'un tilde (le caract<63>re tilde).
|
|||
|
Exemple<EFBFBD>: <code>~leroy</code>.
|
|||
|
</p>
|
|||
|
|
|||
|
|
|||
|
<h3>Noms de fichiers</h3>
|
|||
|
|
|||
|
<p>
|
|||
|
Un nom de fichier qui commence par <code>/</code> est dit <em>absolu</em>.
|
|||
|
Il est interpr<70>t<EFBFBD> en partant de la racine, et en descendant dans l'arbre.
|
|||
|
Un nom de fichier qui ne commence pas par <code>/</code> est
|
|||
|
<em>relatif</em>. Il est interpr<70>t<EFBFBD> en partant du <em>r<>pertoire
|
|||
|
courant</em>. Le r<>pertoire courant est initialement (au moment o<> vous vous
|
|||
|
connectez) votre r<>pertoire personnel<65>; le r<>pertoire courant est le
|
|||
|
r<EFBFBD>pertoire dans lequel vous vous trouvez.
|
|||
|
</p>
|
|||
|
|
|||
|
<p>
|
|||
|
Exemples<EFBFBD>:
|
|||
|
<code>/users/formel/doligez/foo</code> est un nom (ou chemin) absolu.
|
|||
|
<code>bar</code> est un nom relatif. Il d<>signe un fichier appel<65>
|
|||
|
<code>bar</code> et situ<74> dans le r<>pertoire courant. Le fichier exact dont
|
|||
|
il s'agit d<>pend donc de votre r<>pertoire courant.
|
|||
|
</p>
|
|||
|
|
|||
|
<p>
|
|||
|
Remarque<EFBFBD>:
|
|||
|
Le seul caract<63>re sp<73>cial dans les noms de fichiers est le slash
|
|||
|
<code>/</code>. Un nom de fichier peut avoir jusqu'<27> 255 caract<63>res, et
|
|||
|
contenir un nombre quelconque de points.
|
|||
|
</p>
|
|||
|
|
|||
|
<h3>Commandes pour manipuler le syst<73>me de fichiers</h3>
|
|||
|
|
|||
|
|
|||
|
<h4><code>pwd</code></h4>
|
|||
|
|
|||
|
<p>
|
|||
|
Affiche le r<>pertoire courant.
|
|||
|
Exemple<EFBFBD>:
|
|||
|
</p>
|
|||
|
|
|||
|
<pre><span class="prompt">chaland ~ $</span> pwd
|
|||
|
/users/formel/doligez</pre>
|
|||
|
|
|||
|
<h4><code>cd</code></h4>
|
|||
|
|
|||
|
<p>
|
|||
|
Change le r<>pertoire courant. Si on ne lui donne pas d'argument, on
|
|||
|
retourne dans le r<>pertoire personnel. Exemple<6C>:
|
|||
|
</p>
|
|||
|
|
|||
|
<pre>
|
|||
|
<span class="prompt">chaland ~ $</span> pwd
|
|||
|
/users/formel/doligez
|
|||
|
<span class="prompt">chaland ~ $</span> cd ..
|
|||
|
<span class="prompt">chaland /users/formel/ $</span> cd
|
|||
|
<span class="prompt">chaland ~ $</span> pwd
|
|||
|
/users/formel/doligez</pre>
|
|||
|
|
|||
|
<h4><code>mkdir</code></h4>
|
|||
|
|
|||
|
<p>
|
|||
|
Cr<EFBFBD>e un nouveau r<>pertoire, (presque) vide. Il ne contient que
|
|||
|
<code>.</code> et <code>..</code>.
|
|||
|
</p>
|
|||
|
|
|||
|
<h4><code>rmdir</code></h4>
|
|||
|
|
|||
|
<p>
|
|||
|
Supprime un r<>pertoire vide. Si le r<>pertoire contient autre
|
|||
|
chose que <code>.</code> et <code>..</code> <20>a ne marche pas.
|
|||
|
</p>
|
|||
|
|
|||
|
<h4><code>mv</code></h4>
|
|||
|
|
|||
|
<p>
|
|||
|
Renomme un fichier, mais peut aussi le d<>placer d'un r<>pertoire <20>
|
|||
|
un autre. Exemple<6C>:
|
|||
|
</p>
|
|||
|
|
|||
|
<pre>
|
|||
|
<span class="prompt">chaland ~ $</span> mkdir foo
|
|||
|
<span class="prompt">chaland ~ $</span> nano bar
|
|||
|
<span class="prompt">chaland ~ $</span> mv bar foo/bar2
|
|||
|
<span class="prompt">chaland ~ $</span> cd foo
|
|||
|
<span class="prompt">chaland ~/foo $</span> pwd
|
|||
|
/users/formel/doligez/foo
|
|||
|
<span class="prompt">chaland ~/foo $</span> ls
|
|||
|
bar2</pre>
|
|||
|
|
|||
|
<h4><code>ls</code></h4>
|
|||
|
|
|||
|
<p>
|
|||
|
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. <code>ls</code>
|
|||
|
ne liste pas les fichiers dont le nom commence par <code>.</code> C'est
|
|||
|
pourquoi <code>.</code> et <code>..</code> n'apparaissent pas ci-dessus.
|
|||
|
</p>
|
|||
|
|
|||
|
<h2>Raccourcis pour les noms de fichiers</h2>
|
|||
|
|
|||
|
<p>
|
|||
|
Il est parfois ennuyeux d'avoir <20> taper un nom complet de fichier comme
|
|||
|
<code>nabuchodonosor</code>. Il est encore plus ennuyeux d'avoir <20> taper une
|
|||
|
liste de fichier pour les donner en arguments <20> une commande, comme<6D>:
|
|||
|
<code>cc -o foo bar.c gee.c buz.c gog.c</code>. Pour <20>viter ces probl<62>mes,
|
|||
|
on peut utiliser des <em>jokers</em> (<em>wildcards</em> en anglais).
|
|||
|
</p>
|
|||
|
|
|||
|
<p>
|
|||
|
Une <20>toile <code>*</code> dans un nom de fichier est interpr<70>t<EFBFBD>e par le shell
|
|||
|
comme <20><>n'importe quelle s<>quence de caract<63>res<65><73>.
|
|||
|
Exemple<EFBFBD>: <code>cc -o foo *.c</code>.
|
|||
|
</p>
|
|||
|
|
|||
|
<p>
|
|||
|
Pour interpr<70>ter l'<27>toile, le shell va faire la liste de tous les noms de
|
|||
|
fichiers du r<>pertoire courant qui ne commencent pas par <code>.</code> et
|
|||
|
qui finissent par <code>.c</code> Ensuite, il remplace <code>*.c</code> par
|
|||
|
cette liste (tri<72>e par ordre alphab<61>tique) dans la ligne de commande, et
|
|||
|
ex<EFBFBD>cute le r<>sultat, c'est-<2D>-dire par exemple<6C>: <code>cc -o foo bar.c buz.c
|
|||
|
foo.c gee.c gog.c</code>.
|
|||
|
</p>
|
|||
|
|
|||
|
<p>
|
|||
|
On a aussi le <code>?</code>, qui remplace un (et exactement un) caract<63>re
|
|||
|
quelconque. Par exemple, <code>*.?</code> liste tous les fichiers sont
|
|||
|
l'extension n'a qu'une seule lettre.
|
|||
|
</p>
|
|||
|
|
|||
|
<p>
|
|||
|
La forme <code>[abcd]</code> remplace un caract<63>re quelconque parmi
|
|||
|
<code>a</code>, <code>b</code>, <code>c</code>, <code>d</code>. Enfin,
|
|||
|
<code>[^abcd]</code> remplace un caract<63>re quelconque qui ne se trouve pas
|
|||
|
parmi <code>a</code>, <code>b</code>, <code>c</code>, <code>d</code>.
|
|||
|
</p>
|
|||
|
|
|||
|
<p>
|
|||
|
Exemple<EFBFBD>: <code>echo /users/*</code>
|
|||
|
affiche la m<>me chose que
|
|||
|
<code>ls /users</code>
|
|||
|
(La commande <code>echo</code> se contente d'afficher ses arguments.)
|
|||
|
</p>
|
|||
|
|
|||
|
<p>
|
|||
|
Attention<EFBFBD>:
|
|||
|
</p>
|
|||
|
|
|||
|
<ul>
|
|||
|
<li>C'est le shell qui fait le remplacement des arguments contenant un
|
|||
|
joker. On ne peut donc pas faire <code>mv *.c *.bak</code>, car le shell va
|
|||
|
passer <20>
|
|||
|
<code>mv</code> les arguments <code>foo.c bar.c foo.bak bar.bak</code>, et
|
|||
|
<code>mv</code> ne sait pas quel fichier remplacer.
|
|||
|
</li>
|
|||
|
<li>Attention aux espaces. Si vous tapez <code>rm * ~</code>, le shell remplace
|
|||
|
l'<27>toile par la liste des fichiers pr<70>sents, et ils seront tous effac<61>s. Si
|
|||
|
vous tapez <code>rm *~</code>, seuls les fichiers dont le nom finit par un
|
|||
|
tilde seront effac<61>s.
|
|||
|
</li>
|
|||
|
</ul>
|
|||
|
|
|||
|
<p>
|
|||
|
Interlude<EFBFBD>: comment effacer un fichier nomm<6D> <code>?*</code><3E>? On ne peut
|
|||
|
pas taper <code>rm ?*</code> car le shell remplace <code>?*</code> par la
|
|||
|
liste de tous les fichiers du r<>pertoire courant. On peut taper <code>rm -i
|
|||
|
*</code> qui supprime tous les fichiers, mais en demandant confirmation <20>
|
|||
|
chaque fichier. On r<>pond <code>no</code> <20> toutes les questions sauf
|
|||
|
<code>rm: remove ?*?</code>. Autre m<>thode<64>: utiliser les m<>canismes de
|
|||
|
quotation (voir ci-dessous).
|
|||
|
</p>
|
|||
|
|
|||
|
<div class="metainformation">
|
|||
|
Auteurs<EFBFBD>: Roberto Di Cosmo, Xavier Leroy; Marc Espie.
|
|||
|
Mise <20> jour d'<27>milia Robin et de Nicolas George.
|
|||
|
Derni<EFBFBD>re modification le 2002-11-23.
|
|||
|
</div>
|
|||
|
|
|||
|
</body>
|
|||
|
</html>
|