949 lines
34 KiB
HTML
949 lines
34 KiB
HTML
|
<?xml version="1.0" encoding="UTF-8"?>
|
|||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
|||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
|||
|
<head>
|
|||
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
|||
|
<title>Fichiers</title>
|
|||
|
<link rel="stylesheet" href="../tuteurs.css" type="text/css" />
|
|||
|
</head>
|
|||
|
<body>
|
|||
|
<div class="navigation">
|
|||
|
<h1>Tuteurs informatique<br /><a href="../meta/contact.html">Nous contacter</a></h1>
|
|||
|
<hr />
|
|||
|
<ul class="menu">
|
|||
|
<li>
|
|||
|
<a href="../meta/charte_graphique.html">Utiliser ce site</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="../actualite.html">Actu et stages</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="../docs/">Docs à imprimer</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="../meta/plan_site.html">Plan du site</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="../search.html">Rechercher</a>
|
|||
|
</li>
|
|||
|
</ul>
|
|||
|
<hr />
|
|||
|
<ul class="arbre">
|
|||
|
<li>
|
|||
|
<a href="../">Les tuteurs</a>
|
|||
|
<ul class="arbre">
|
|||
|
<li>
|
|||
|
<a href="./">Unix</a>
|
|||
|
<ul class="arbre">
|
|||
|
<li>
|
|||
|
<a href="accents-base.html">Accents</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="aide.html">Aide</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="archives.html">Archiver</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="chercher.html">Chercher</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="clavier.html">Clavier, souris</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="communiquer.html">Autres utilisateurs</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="config/">Config conscrits</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="copyright.html">Copyrights</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="disquettes.html">Disquettes</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="divers.html">Divers</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="droits.html">Droits d'accès</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="editeurs/">Éditeurs</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="exercices/">Exercices</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="fichiers.html" class="actuel">Fichiers</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="formats-memo.html">Mémo formats</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="histoire.html">Histoire</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="imprimer.html">Imprimer</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="jamais.html">Jamais !</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="jeux.html">Jeux</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="loguer.html">Se loguer</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="media.html">Supports de données amovibles</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="place_disque.html">Place disque</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="prelude.html">Unix</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="processus.html">Processus</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="repertoires.html">Répertoires</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="shell/">Shell</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="systemes_fichiers.html">Systèmes de fichiers</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="unix-technique.html">Machines Unix</a>
|
|||
|
</li>
|
|||
|
</ul>
|
|||
|
</li>
|
|||
|
</ul>
|
|||
|
</li>
|
|||
|
</ul>
|
|||
|
<hr />
|
|||
|
<ul class="menu">
|
|||
|
<li>
|
|||
|
<a href="http://www.eleves.ens.fr/">Serveur des élèves</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="http://www.ens.fr/">ENS</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="http://www.spi.ens.fr/">SPI</a>
|
|||
|
</li>
|
|||
|
</ul>
|
|||
|
</div>
|
|||
|
<div class="corps">
|
|||
|
<h1>Manipuler les fichiers</h1>
|
|||
|
<div class="sommaire">
|
|||
|
<ul>
|
|||
|
<li>
|
|||
|
<a href="#comment">Créer un fichier</a>
|
|||
|
<ul>
|
|||
|
<li>
|
|||
|
<a href="#s1_1">Généralités</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="#s1_2">Créer un fichier texte</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="#s1_3">Créer un fichier vide</a>
|
|||
|
</li>
|
|||
|
</ul>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="#nom">Nommer ses fichiers</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="#less">Lire un fichier</a>
|
|||
|
<ul>
|
|||
|
<li>
|
|||
|
<a href="#cat">Lire un fichier avec <code>cat</code></a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="#s3_2">Les <i lang="en" xml:lang="en">pagers</i> <code>more</code> et
|
|||
|
<code>less</code></a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="#head">Afficher le début d'un fichier</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="#s3_4">Afficher la fin d'un fichier</a>
|
|||
|
</li>
|
|||
|
</ul>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="#s4">Manipuler les fichiers</a>
|
|||
|
<ul>
|
|||
|
<li>
|
|||
|
<a href="#s4_1">Copier un fichier</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="#mv">Renommer un fichier</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="#s4_3">Déplacer un fichier</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="#rm">Effacer un fichier</a>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="#s4_5">Concaténer des fichiers</a>
|
|||
|
</li>
|
|||
|
</ul>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<a href="#s5">Récapitulons (exemple)</a>
|
|||
|
</li>
|
|||
|
</ul>
|
|||
|
</div>
|
|||
|
<h2>
|
|||
|
<a name="comment" id="comment">Créer un fichier</a>
|
|||
|
</h2>
|
|||
|
<h3>
|
|||
|
<a name="s1_1" id="s1_1">Généralités</a>
|
|||
|
</h3>
|
|||
|
<p>
|
|||
|
Un <dfn>fichier</dfn> est un <em>paquet d'informations</em> : ce peut
|
|||
|
être aussi bien du texte, que de la musique ou une image. Chaque objet
|
|||
|
que vous manipulez en informatique (une page Web, la musique de
|
|||
|
Casimir, vos photos de vacances, un logiciel, etc.) correspond à un
|
|||
|
fichier.
|
|||
|
</p>
|
|||
|
<p>
|
|||
|
Quand vous écrivez un texte avec OpenOffice.org et que vous le
|
|||
|
sauvegardez sous le nom « Rapport de maîtrise », vous créez un fichier
|
|||
|
à ce nom, écrit sur le disque dur. Chaque fois que vous écrivez
|
|||
|
quelque chose sur le disque, vous créez un ou plusieurs fichiers.
|
|||
|
</p>
|
|||
|
<h3>
|
|||
|
<a name="s1_2" id="s1_2">Créer un fichier texte</a>
|
|||
|
</h3>
|
|||
|
<p>
|
|||
|
Une des opérations les plus courantes consiste à écrire du texte. Pour
|
|||
|
cela, voir le cours sur les <a href="editeurs/">éditeurs de
|
|||
|
texte</a>. Quand on vous demande de créer un fichier, généralement il
|
|||
|
faut utiliser un éditeur de texte. Ainsi, pour créer le fichier
|
|||
|
<code>index.html</code> (accueil d'une page Web), utilisez l'éditeur
|
|||
|
de KDE, kwrite, et tapez :
|
|||
|
</p>
|
|||
|
<pre><span class="prompt">brick ~/www/ $</span> kwrite index.html
|
|||
|
</pre>
|
|||
|
<p>
|
|||
|
Si vous êtes pressé, la commande <code>cat</code> peut faire office
|
|||
|
d'éditeur minimaliste. Tapez la commande suivante, et quelques mots :
|
|||
|
</p>
|
|||
|
<pre><span class="prompt">brick ~ $</span> cat > notes
|
|||
|
Faire les courses
|
|||
|
Passer à la bibliothèque
|
|||
|
</pre>
|
|||
|
<p class="continue">
|
|||
|
Et finissez par <code>Ctrl+D</code>. Le fichier <code>notes</code>
|
|||
|
contient les quelques lignes que vous avez saisies.
|
|||
|
</p>
|
|||
|
<h3>
|
|||
|
<a name="s1_3" id="s1_3">Créer un fichier vide</a>
|
|||
|
</h3>
|
|||
|
<p>
|
|||
|
On peut aussi créer un fichier à l'aide de la commande
|
|||
|
<code>touch</code>. <code>touch toto</code> crée un fichier vide
|
|||
|
appelé « toto ». En fait, cette commande sert essentiellement à
|
|||
|
modifier la date de dernière modification d'un fichier.
|
|||
|
</p>
|
|||
|
<div class="ens"><strong>Application :</strong> vous avez une page Web sur le serveur
|
|||
|
des élèves et que vous ne voulez pas qu'à chaque virgule modifiée, on
|
|||
|
voie votre page dans la liste des <a href="http://www.eleves.ens.fr/home/index-time.html.fr">pages
|
|||
|
récemment modifiées</a>. Créez alors dans votre répertoire
|
|||
|
<code>www</code> un fichier vide appelé <code>.last_modified</code> :
|
|||
|
</div>
|
|||
|
<pre><span class="prompt">brick ~/www/ $</span> touch .last_modified
|
|||
|
</pre>
|
|||
|
<p class="continue">
|
|||
|
Votre page, désormais, ne figurera dans la liste des récentes
|
|||
|
modifications qu'après un nouveau <code>touch</code> du fichier
|
|||
|
<code>.last_modified</code>.
|
|||
|
</p>
|
|||
|
<h2>
|
|||
|
<a name="nom" id="nom">Nommer ses fichiers</a>
|
|||
|
</h2>
|
|||
|
<p>
|
|||
|
Les noms de fichiers s'écrivent avec des caractères
|
|||
|
<dfn>alphanumériques</dfn> (lettres et chiffres). On peut utiliser
|
|||
|
des majuscules et des minuscules, mais elles ne sont pas
|
|||
|
interchangeables : <code>document</code> et <code>Document</code> sont
|
|||
|
deux fichiers distincts.
|
|||
|
</p>
|
|||
|
<p>
|
|||
|
Il est préférable d'éviter les espaces dans les noms de fichiers. On
|
|||
|
peut les remplacer par un <i lang="en" xml:lang="en">underscore</i> (<code>_</code>)
|
|||
|
ou un tiret (<code>-</code>). :
|
|||
|
</p>
|
|||
|
<pre>
|
|||
|
banque-de-france.tex
|
|||
|
banque_centrale.dvi
|
|||
|
</pre>
|
|||
|
<p class="continue">
|
|||
|
Il vaut mieux éviter les caractères accentués, et proscrire le reste
|
|||
|
(ponctuations diverses, signes bizarres). Il faut aussi éviter de
|
|||
|
faire commencer un fichier par un <code>.</code> (par exemple
|
|||
|
<code>.document</code>). Il est également sage d'éviter de donner des
|
|||
|
noms trop longs (même si en théorie vous avez droit à 255 caractères).
|
|||
|
</p>
|
|||
|
<p>
|
|||
|
Certains fichiers ont des suffixes conventionnels qui les identifient
|
|||
|
auprès des utilisateurs et de certains programmes (liste non
|
|||
|
exhaustive de suffixes et d'outils) :
|
|||
|
</p>
|
|||
|
<table class="tableau">
|
|||
|
<tr>
|
|||
|
<th>Suffixe</th>
|
|||
|
<th>Nature</th>
|
|||
|
<th>Logiciel à utiliser</th>
|
|||
|
</tr>
|
|||
|
<tr>
|
|||
|
<td>
|
|||
|
<code>.tex</code>
|
|||
|
</td>
|
|||
|
<td>Fichier source pour LaTeX</td>
|
|||
|
<td>
|
|||
|
<a href="editeurs/">Éditeur de texte</a>
|
|||
|
</td>
|
|||
|
</tr>
|
|||
|
<tr>
|
|||
|
<td>
|
|||
|
<code>.dvi</code>
|
|||
|
</td>
|
|||
|
<td>Résultat de la compilation LaTeX</td>
|
|||
|
<td><code>kdvi</code>, <a href="../logiciels/latex/xdvi.html"><code>xdvi</code></a></td>
|
|||
|
</tr>
|
|||
|
<tr>
|
|||
|
<td><code>.aux</code>, <code>.log</code>, <code>.toc</code>, <code>.mp</code>, etc.</td>
|
|||
|
<td>Fichiers produits automatiquement par la compilation LaTeX</td>
|
|||
|
<td>À regarder avec <a href="#less"><code>less</code></a></td>
|
|||
|
</tr>
|
|||
|
<tr>
|
|||
|
<td><code>.ps</code>, <code>.eps</code></td>
|
|||
|
<td>Fichiers PostScript</td>
|
|||
|
<td><code>kghostview</code>, <code>gv</code></td>
|
|||
|
</tr>
|
|||
|
<tr>
|
|||
|
<td>
|
|||
|
<code>.txt</code>
|
|||
|
</td>
|
|||
|
<td>Fichier texte</td>
|
|||
|
<td><a href="editeurs/">Éditeur</a> si vous voulez le
|
|||
|
modifier, <a href="#less"><code>less</code></a> si vous voulez juste
|
|||
|
le lire.</td>
|
|||
|
</tr>
|
|||
|
<tr>
|
|||
|
<td><code>.html</code>, <code>.shtml</code>, <code>.htm</code></td>
|
|||
|
<td>Pages Web</td>
|
|||
|
<td><a href="../internet/web/lynx.html">Navigateur</a>
|
|||
|
(<code>konqueror</code>, <code>firefox</code>, <code>w3m</code>...)</td>
|
|||
|
</tr>
|
|||
|
<tr>
|
|||
|
<td><code>.au</code>, <code>.ogg</code>, <code>.mp2</code>, <code>.mp3</code></td>
|
|||
|
<td>Son</td>
|
|||
|
<td>Les fichiers <code>.au</code> s'écoutent avec <code>play</code>, les
|
|||
|
<code>.ogg</code> avec <code>ogg123</code>, les <code>.mp3</code> avec <code>mpg123</code>. </td>
|
|||
|
</tr>
|
|||
|
<tr>
|
|||
|
<td><code>.tiff</code>, <code>.png</code>, <code>.jpg</code>,
|
|||
|
<code>.gif</code>, <code>.ppm</code>...</td>
|
|||
|
<td>Images</td>
|
|||
|
<td><code>kview</code>
|
|||
|
pour les regarder ; <code>gimp</code> pour les modifier</td>
|
|||
|
</tr>
|
|||
|
<tr>
|
|||
|
<td><code>.mov</code>, <code>.avi</code></td>
|
|||
|
<td>Séquences animées</td>
|
|||
|
<td>
|
|||
|
<code>mplayer</code>
|
|||
|
</td>
|
|||
|
</tr>
|
|||
|
<tr>
|
|||
|
<td>
|
|||
|
<code>.pdf</code>
|
|||
|
</td>
|
|||
|
<td>Portable Document Format</td>
|
|||
|
<td><code>kpdf</code>, <a href="http://www.spi.ens.fr/install/acrobat.html"><code>acroread</code></a> (Acrobat Reader)</td>
|
|||
|
</tr>
|
|||
|
<tr>
|
|||
|
<td><code>.gz</code>, <code>.tgz</code>, <code>.tar</code>,
|
|||
|
<code>.tar.gz</code>, <code>.Z</code>, <code>.tar.Z</code>,
|
|||
|
<code>.zip</code>, <code>.zoo</code>, <code>.lha</code>, <code>.lzx</code>,
|
|||
|
<code>.z</code>, <code>.uu</code>, <code>.shar</code></td>
|
|||
|
<td>Divers formats d'archives plus ou moins compressés</td>
|
|||
|
<td>Consultez la page sur la <a href="archives.html">compression</a></td>
|
|||
|
</tr>
|
|||
|
</table>
|
|||
|
<h2>
|
|||
|
<a name="less" id="less">Lire un fichier</a>
|
|||
|
</h2>
|
|||
|
<h3>
|
|||
|
<a name="cat" id="cat">Lire un fichier avec <code>cat</code></a>
|
|||
|
</h3>
|
|||
|
<p>
|
|||
|
Pour pouvoir consulter un fichier (sans l'éditer), le plus simple est
|
|||
|
la commande <code>cat</code> :
|
|||
|
</p>
|
|||
|
<pre><span class="prompt">brick ~ $</span> cat <kbd>fichier</kbd>
|
|||
|
</pre>
|
|||
|
<p class="continue">
|
|||
|
Le problème est que <code>cat</code> affiche l'intégralité du fichier
|
|||
|
que vous lui demandez. Si le fichier est plus long que la taille de
|
|||
|
votre écran (ce qui arrive quand même souvent), vous verrez défiler
|
|||
|
très vite à l'écran le contenu de votre fichier, sans pouvoir
|
|||
|
l'arrêter ou le ralentir. Pas très pratique...
|
|||
|
</p>
|
|||
|
<h3>
|
|||
|
<a name="s3_2" id="s3_2">Les <i lang="en" xml:lang="en">pagers</i> <code>more</code> et
|
|||
|
<code>less</code></a>
|
|||
|
</h3>
|
|||
|
<p>
|
|||
|
Mieux vaut alors utiliser ce qu'en anglais on appelle un <i lang="en" xml:lang="en">pager</i> (parfois traduit par « visionneuse » en
|
|||
|
français). Le nom « pager » vient du fait qu'il affiche un fichier
|
|||
|
page par page et non tout d'un coup comme le fait
|
|||
|
<code>cat</code>. Sur les Unix un minimum récents, la commande qui
|
|||
|
fait cela est <code>less</code>. Pour lire le fichier
|
|||
|
<code>toto.txt</code>, tapez simplement :
|
|||
|
</p>
|
|||
|
<pre><span class="prompt">brick ~ $</span> less toto.txt
|
|||
|
</pre>
|
|||
|
<p class="continue">
|
|||
|
Voici un tableau des commandes utiles de <code>less</code> :
|
|||
|
</p>
|
|||
|
<table class="tableau">
|
|||
|
<tr>
|
|||
|
<td>
|
|||
|
<code>h</code>
|
|||
|
</td>
|
|||
|
<td>afficher une aide.</td>
|
|||
|
</tr>
|
|||
|
<tr>
|
|||
|
<td>
|
|||
|
<code>SPC</code>
|
|||
|
</td>
|
|||
|
<td>faire défiler le texte page par page</td>
|
|||
|
</tr>
|
|||
|
<tr>
|
|||
|
<td><code>d, ^D</code> (<em>down</em>)</td>
|
|||
|
<td>descendre d'un demi-écran</td>
|
|||
|
</tr>
|
|||
|
<tr>
|
|||
|
<td><code>f, ^F</code> (<em>forward</em>)</td>
|
|||
|
<td>descendre d'un écran</td>
|
|||
|
</tr>
|
|||
|
<tr>
|
|||
|
<td><code>p, ^P</code> (<em>previous</em>)</td>
|
|||
|
<td>remonter d'un demi-écran</td>
|
|||
|
</tr>
|
|||
|
<tr>
|
|||
|
<td><code>b, ^B</code> (<em>back</em>)</td>
|
|||
|
<td>remonter d'un écran</td>
|
|||
|
</tr>
|
|||
|
<tr>
|
|||
|
<td>
|
|||
|
<code>j</code>
|
|||
|
</td>
|
|||
|
<td>descendre d'une ligne</td>
|
|||
|
</tr>
|
|||
|
<tr>
|
|||
|
<td>
|
|||
|
<code>k</code>
|
|||
|
</td>
|
|||
|
<td>remonter d'une ligne</td>
|
|||
|
</tr>
|
|||
|
<tr>
|
|||
|
<td>
|
|||
|
<code>G</code>
|
|||
|
</td>
|
|||
|
<td>aller à la fin du texte</td>
|
|||
|
</tr>
|
|||
|
<tr>
|
|||
|
<td>
|
|||
|
<code><em>nombre</em>G</code>
|
|||
|
</td>
|
|||
|
<td>aller à la ligne de numéro <em>nombre</em> (par exemple, <code>1G</code>
|
|||
|
place à la première ligne du fichier).</td>
|
|||
|
</tr>
|
|||
|
<tr>
|
|||
|
<td>
|
|||
|
<code>/mot</code>
|
|||
|
</td>
|
|||
|
<td>chercher le « mot » dans le texte. Il sera signalé en inverse dans
|
|||
|
tout le texte. Pour aller à la prochaine occurence du mot, taper
|
|||
|
<code>n</code>, pour aller à la précédente occurence, taper
|
|||
|
<code>N</code>.</td>
|
|||
|
</tr>
|
|||
|
<tr>
|
|||
|
<td>
|
|||
|
<code>q</code>
|
|||
|
</td>
|
|||
|
<td>quitter</td>
|
|||
|
</tr>
|
|||
|
</table>
|
|||
|
<p><strong><code>more</code></strong> (en savoir <em> davantage</em> sur
|
|||
|
un fichier) est une commande standard sur tous les systèmes Unix
|
|||
|
(alors que <code>less</code> n'est pas installé
|
|||
|
partout). <code>less</code> (installé à l'École) est cependant plus
|
|||
|
performant : les mots recherchés apparaissent sur fond noir au lieu
|
|||
|
d'être juste placés en haut de l'écran, le défilement du texte est
|
|||
|
plus précis. Si vous n'avez que <code>more</code> à disposition, vous
|
|||
|
pouvez utiliser les commandes suivantes :
|
|||
|
</p>
|
|||
|
<table class="tableau">
|
|||
|
<tr>
|
|||
|
<td>
|
|||
|
<code>h</code>
|
|||
|
</td>
|
|||
|
<td>afficher une aide</td>
|
|||
|
</tr>
|
|||
|
<tr>
|
|||
|
<td><code>d</code> (<em> down</em>)</td>
|
|||
|
<td>descendre d'un demi-écran</td>
|
|||
|
</tr>
|
|||
|
<tr>
|
|||
|
<td><code>f</code> (<em> forward</em>)</td>
|
|||
|
<td>descendre d'un écran</td>
|
|||
|
</tr>
|
|||
|
<tr>
|
|||
|
<td><code>b</code> (<em> back</em>)</td>
|
|||
|
<td>remonter d'un demi-écran</td>
|
|||
|
</tr>
|
|||
|
<tr>
|
|||
|
<td>
|
|||
|
<code>/mot</code>
|
|||
|
</td>
|
|||
|
<td>chercher le « mot » dans le texte (le résultat est beaucoup moins clair
|
|||
|
qu'avec <code>less</code> ).</td>
|
|||
|
</tr>
|
|||
|
<tr>
|
|||
|
<td>
|
|||
|
<code>q</code>
|
|||
|
</td>
|
|||
|
<td>quitter</td>
|
|||
|
</tr>
|
|||
|
</table>
|
|||
|
<h3>
|
|||
|
<a name="head" id="head">Afficher le début d'un fichier</a>
|
|||
|
</h3>
|
|||
|
<p>
|
|||
|
On utilise la commande <code>head</code> pour afficher le début d'un
|
|||
|
fichier :
|
|||
|
</p>
|
|||
|
<pre><span class="prompt">brick ~ $</span> head point_de_lendemain.txt
|
|||
|
J'aimais éperdumment la comtesse de ... ; j'avais vingt ans, et
|
|||
|
j'étais ingénu ; elle me trompa, je me fâchai, elle me
|
|||
|
quitta. J'étais ingénu, je la regrettai ; j'avais vingt ans, elle
|
|||
|
me pardonna : et comme j'avais vingt ans, que j'étais ingénu,
|
|||
|
toujours trompé, mais plus quitté, je me croyais l'amant le mieux
|
|||
|
(...)
|
|||
|
</pre>
|
|||
|
<p class="continue">
|
|||
|
Par défaut, <code>head</code> affiche les 10 premières lignes. Pour
|
|||
|
lui spécifier un nombre de lignes précis, utilisez l'option
|
|||
|
<code>-n</code>, <var>n</var> étant le nombre de votre choix :
|
|||
|
</p>
|
|||
|
<pre><span class="prompt">brick ~ $</span> head -2 point_de_lendemain.txt
|
|||
|
J'aimais éperdumment la comtesse de ... ; j'avais vingt ans, et
|
|||
|
j'étais ingénu ; elle me trompa, je me fâchai, elle me
|
|||
|
<span class="prompt">brick ~ $</span>
|
|||
|
</pre>
|
|||
|
<p>
|
|||
|
« Mais à quoi est-ce que ça peut bien servir ? », vous direz-vous. Là,
|
|||
|
comme ça, c'est vrai que l'utilité est limitée. Mais en combinaison
|
|||
|
avec d'autres commandes, c'est très utile. Un exemple tiré de notre
|
|||
|
page sur la <a href="place_disque.html">place disque</a> :
|
|||
|
</p>
|
|||
|
<pre><span class="prompt">sas ~ $</span> du -ak | sort -nr | head -10
|
|||
|
98280 .
|
|||
|
22007 ./www
|
|||
|
1658 ./Mail
|
|||
|
9637 ./www/hist
|
|||
|
5005 ./www/hist/maitrise
|
|||
|
4910 ./histoire
|
|||
|
3941 ./Mail/archives
|
|||
|
3757 ./www/philo/
|
|||
|
3274 ./www/philo/cours
|
|||
|
3112 ./www/philo/cours/hegel
|
|||
|
2841 ./prive
|
|||
|
</pre>
|
|||
|
<p class="continue">
|
|||
|
Nous avons ici les 10 fichiers ou répertoires les plus gros de notre
|
|||
|
compte. Toutes les explications sur cette suite de commandes se
|
|||
|
trouvent dans nitre page sur la <a href="place_disque.html">place
|
|||
|
disque</a>.
|
|||
|
</p>
|
|||
|
<h3>
|
|||
|
<a name="s3_4" id="s3_4">Afficher la fin d'un fichier</a>
|
|||
|
</h3>
|
|||
|
<p>
|
|||
|
Cette fois, c'est la commande <code>tail</code> qu'on utilise, avec
|
|||
|
les mêmes options que <code>head</code> :
|
|||
|
</p>
|
|||
|
<pre><span class="prompt">brick ~ $</span> tail -3 point_de_lendemain.txt
|
|||
|
sensible. Adieu, encore une fois. Vous êtes charmant... Ne me
|
|||
|
brouillez pas avec la Comtesse ». Elle me serra la main, et
|
|||
|
me quitta.
|
|||
|
</pre>
|
|||
|
<p>
|
|||
|
Cette commande devient très intéressante avec l'option
|
|||
|
<code>-f</code> : celle-ci dit à <code>tail</code> de ne pas s'arrêter
|
|||
|
à la fin du fichier, mais de continuer à afficher les nouvelles
|
|||
|
informations qui seraient ajoutées au fichier. Une applications
|
|||
|
typique est la surveillance des fichiers de logs (journaux où le
|
|||
|
système, ou certains programmes, consignent des informations sur leur
|
|||
|
travail).
|
|||
|
</p>
|
|||
|
<h4>Application</h4>
|
|||
|
<p>
|
|||
|
Vous êtes en train de rédiger votre <a href="../internet/web/htaccess.html"><code>.htaccess</code></a>
|
|||
|
(fichier de configuration du serveur Web, Apache) et vous voulez
|
|||
|
regarder en temps réel les messages d'erreur du serveur.
|
|||
|
</p>
|
|||
|
<div class="ens">
|
|||
|
Ces messages d'erreur, à l'ENS, sont dans
|
|||
|
<code>~webmaster/logs/access_log.curr</code>, il faut donc surveiller
|
|||
|
les messages d'erreur sui arrivent au fur et à mesure que vous faites
|
|||
|
vos essais. Tapez dans l'une de vos fenêtres la commande suivante :
|
|||
|
</div>
|
|||
|
<pre><span class="prompt">sas ~ $</span> tail -f ~webmaster/logs/access_log.curr | grep monlogin
|
|||
|
</pre>
|
|||
|
<p class="continue">
|
|||
|
et vous verrez s'afficher, au fur et à mesure et en temps réel, toutes
|
|||
|
les erreurs qui contiennent votre login, donc vos pages. Pour arrêter
|
|||
|
<code>tail</code> quand vous en avez assez, tapez <code>Ctrl+C</code>.
|
|||
|
</p>
|
|||
|
<h2>
|
|||
|
<a name="s4" id="s4">Manipuler les fichiers</a>
|
|||
|
</h2>
|
|||
|
<h3>
|
|||
|
<a name="s4_1" id="s4_1">Copier un fichier</a>
|
|||
|
</h3>
|
|||
|
<p><dfn>Copier un fichier</dfn>, c'est prendre un fichier déjà existant
|
|||
|
et en créer une copie rigoureusement identique sous un nom
|
|||
|
différent. On utilise pour cela la commande <code>cp</code> (comme <i lang="en" xml:lang="en">cp</i>). Pour copier <code>toto.txt</code> en
|
|||
|
<code>toto2.txt</code> :
|
|||
|
</p>
|
|||
|
<pre><span class="prompt">brick ~ $</span> cp toto.txt toto2.txt
|
|||
|
</pre>
|
|||
|
<p class="continue">
|
|||
|
Notez qu'on ne peut pas se servir de <code>cp</code> pour copier un
|
|||
|
répertoire. Ainsi, si vous essayez de copier votre répertoire
|
|||
|
<code>www</code>, <code>cp</code> va se plaindre :
|
|||
|
</p>
|
|||
|
<pre><span class="prompt">brick ~ $</span> cp www www2
|
|||
|
cp: www: is a directory
|
|||
|
</pre>
|
|||
|
<div class="encadre"><strong>S'exercer :</strong> pour vérifier que vous avez bien compris,
|
|||
|
faites les <a href="exercices/cp_mv.html">exercices sur <code>cp</code></a>.
|
|||
|
</div>
|
|||
|
<h3>
|
|||
|
<a name="mv" id="mv">Renommer un fichier</a>
|
|||
|
</h3>
|
|||
|
<p><dfn>Renommer un fichier</dfn>, c'est lui donner un nouveau nom, sans
|
|||
|
rien modifier d'autre. On utilise pour cela la commande
|
|||
|
<code>mv</code> (comme <i lang="en" xml:lang="en">move</i>). Pour renommer
|
|||
|
<code>dissert.tex</code> en <code>dissertation.tex</code> :
|
|||
|
</p>
|
|||
|
<pre><span class="prompt">brick ~ $</span> mv dissert.tex dissertation.tex
|
|||
|
</pre>
|
|||
|
<p>
|
|||
|
La même commande sert également, avec la même syntaxe, pour les
|
|||
|
répertoires. Ainsi, si vous voulez renommer votre répertoire
|
|||
|
<code>boulot</code> en répertoire <code>magistere</code> :
|
|||
|
</p>
|
|||
|
<pre><span class="prompt">brick ~ $</span> mv boulot magistere
|
|||
|
</pre>
|
|||
|
<h3>
|
|||
|
<a name="s4_3" id="s4_3">Déplacer un fichier</a>
|
|||
|
</h3>
|
|||
|
<p>
|
|||
|
C'est toujours la commande <code>mv</code> que l'on utilise. La
|
|||
|
syntaxe est la suivante : <code>mv fichier
|
|||
|
nouvel_endroit</code>. Ainsi, vous voulez déplacez le fichier
|
|||
|
<code>cv.html</code>, situé à la racine de votre compte, dans votre
|
|||
|
répertoire <code>www</code> :
|
|||
|
</p>
|
|||
|
<pre><span class="prompt">brick ~ $</span> mv cv.html www
|
|||
|
</pre>
|
|||
|
<p class="continue">
|
|||
|
Autre exemple :
|
|||
|
</p>
|
|||
|
<pre><span class="prompt">brick ~ $</span> mv fichier ..
|
|||
|
</pre>
|
|||
|
<p class="continue">
|
|||
|
déplace un fichier dans le répertoire père — si vous ne
|
|||
|
comprenez pas ce terme, reportez-vous au tableau qui illustre la
|
|||
|
commande <a href="repertoires.html#cd"><code>cd</code></a> dans la
|
|||
|
page sur les <a href="repertoires.html">répertoires</a>.
|
|||
|
</p>
|
|||
|
<div class="encadre"><strong>S'exercer :</strong> pour vérifier que vous avez bien compris,
|
|||
|
faites les <a href="exercices/cp_mv.html">exercices sur
|
|||
|
<code>mv</code></a>. </div>
|
|||
|
<h3>
|
|||
|
<a name="rm" id="rm">Effacer un fichier</a>
|
|||
|
</h3>
|
|||
|
<p>
|
|||
|
Sous Unix, <dfn>effacer un fichier</dfn>, c'est le détruire de façon
|
|||
|
<strong>irréversible</strong>. Pas de concept de poubelle dans
|
|||
|
laquelle on peut fouiller, comme sous Windows ou Mac OS. C'est la
|
|||
|
commande <code>rm</code> (comme <i lang="en" xml:lang="en">remove</i>) qui efface un
|
|||
|
fichier :
|
|||
|
</p>
|
|||
|
<pre><span class="prompt">brick ~ $</span> rm fichier
|
|||
|
</pre>
|
|||
|
<div class="ens">
|
|||
|
Dans les configs conscrits, depuis un certain temps, <code>rm</code>
|
|||
|
vous demande de confirmer l'ordre d'effacement :
|
|||
|
</div>
|
|||
|
<pre><span class="prompt">brick ~ $</span> rm fichier
|
|||
|
rm: remove fichier (yes/no)?
|
|||
|
</pre>
|
|||
|
<div class="ens">
|
|||
|
En effet, le <code>rm</code> que vous utilisez fait en fait <code>rm
|
|||
|
-i</code>, comme vous le montrera la commande <code>which</code> :
|
|||
|
</div>
|
|||
|
<pre><span class="prompt">brick ~ $</span> which rm
|
|||
|
rm: aliased to nocorrect rm -i
|
|||
|
</pre>
|
|||
|
<p class="continue">
|
|||
|
Cette précaution évite le fameux doigt qui glisse et autres erreurs
|
|||
|
qui effacent par mégarde des fichiers importants. Mais cette
|
|||
|
précaution n'existe pas pour toutes les configurations : observez donc
|
|||
|
la plus grande prudence en utilisant <code>rm</code>.
|
|||
|
</p>
|
|||
|
<div class="encadre"><strong>Remarque</strong> : à l'ENS, les partitions utilisateurs sont
|
|||
|
sauvegardées toutes les nuits par le SPI. Si donc vous effacez un
|
|||
|
fichier accidentellement et qu'il avait plus d'un ou deux jours, vous
|
|||
|
pouvez envoyer un courrier électronique au <a href="http://www.spi.ens.fr/">SPI</a> pour demander qu'on vous le
|
|||
|
récupère.
|
|||
|
</div>
|
|||
|
<p>
|
|||
|
Il existe aussi <a href="../logiciels/rcs/">RCS</a>, qui
|
|||
|
enregistre des copies de sauvegarde de vos fichiers, et permet de gérer
|
|||
|
les différentes versions de votre travail.
|
|||
|
</p>
|
|||
|
<h4>Effacer plusieurs fichiers en même temps</h4>
|
|||
|
<p>
|
|||
|
Nettoyage de printemps sur votre compte, vous voulez supprimer
|
|||
|
plusieurs fichiers en même temps. Il suffit tout simplement de les
|
|||
|
indiquer à la suite à <code>rm</code> :
|
|||
|
</p>
|
|||
|
<pre><span class="prompt">brick ~ $</span> rm article_vn.tex article_leveque.tex article_leveque2.tex
|
|||
|
</pre>
|
|||
|
<h4>Effacer un répertoire et son contenu</h4>
|
|||
|
<p>
|
|||
|
La commande pour effacer un répertoire est <code>rmdir</code>
|
|||
|
(cf. notre <a href="repertoires.html">page sur les répertoires</a>),
|
|||
|
mais elle ne marche que si le répertoire est vide. La commande
|
|||
|
<code>rm</code> ne peut pas effacer directement un répertoire :
|
|||
|
</p>
|
|||
|
<pre><span class="prompt">brick ~ $</span> rm www
|
|||
|
rm: www is a directory
|
|||
|
</pre>
|
|||
|
<p class="continue">
|
|||
|
Pour effacer un répertoire <em>et son contenu</em>, utilisez l'option
|
|||
|
<code>-R</code> (comme <i lang="en" xml:lang="en">recursive</i> de
|
|||
|
<code>rm</code>. Pour effacer votre répertoire <code>toto/</code> et
|
|||
|
les fichiers qu'il contient, tapez :
|
|||
|
</p>
|
|||
|
<pre><span class="prompt">brick ~ $</span> rm -R toto
|
|||
|
</pre>
|
|||
|
<div class="ens">
|
|||
|
À l'ENS, parce que <code>rm</code> est en fait <code>rm -i</code>,
|
|||
|
<code>rm</code> vous demandera confirmation pour chacun des fichiers
|
|||
|
contenus dans le répertoire <code>toto/</code> :
|
|||
|
</div>
|
|||
|
<pre><span class="prompt">brick ~ $</span> rm -R toto
|
|||
|
rm: examine files in directory toto (yes/no)? yes
|
|||
|
rm: remove toto/titi (yes/no)? y
|
|||
|
rm: remove toto/tata (yes/no)?
|
|||
|
(...)
|
|||
|
</pre>
|
|||
|
<p class="continue">
|
|||
|
Si vous trouvez fastidieux de devoir répondre oui à chaque fois, vous
|
|||
|
pouvez utiliser en plus l'option <code>-f</code> (comme <i lang="en" xml:lang="en">force</i>) de <code>rm</code>. Cette option supplante
|
|||
|
l'option <code>-i</code> et <strong>efface irrémédiablement sans
|
|||
|
demander confirmation</strong>. Faites donc très attention avec.
|
|||
|
</p>
|
|||
|
<h4>Effacer des fichiers au nom exotique</h4>
|
|||
|
<p>
|
|||
|
Comment effacer des fichiers qui comment par des caractères bizarres,
|
|||
|
ou qui comportent des espaces dans leur nom ? La commande
|
|||
|
<code>rm</code> semble devenir subitement inefficace ! Essayons
|
|||
|
d'abord avec un fichier avec des espaces :
|
|||
|
</p>
|
|||
|
<pre><span class="prompt">brick ~ $</span> rm siècle de périclès.doc
|
|||
|
rm: siècle: No such file or directory
|
|||
|
rm: de: No such file or directory
|
|||
|
rm: périclès.doc: No such file or directory
|
|||
|
</pre>
|
|||
|
<p class="continue">
|
|||
|
En fait, <code>rm</code> croit que vous voulez effacer d'abord un
|
|||
|
fichier appelé <code>siècle</code>, puis un autre appelé
|
|||
|
<code>de</code>, etc. La solution est de mettre le nom du fichier
|
|||
|
entre guillemets ("), et <code>rm</code> l'efface sans problème :
|
|||
|
</p>
|
|||
|
<pre><span class="prompt">brick ~ $</span> rm "siècle de périclès.doc"
|
|||
|
remove siècle de périclès.doc? y
|
|||
|
<span class="prompt">brick ~ $</span>
|
|||
|
</pre>
|
|||
|
<p>
|
|||
|
Essayons maintenant avec un fichier commençant par un caractère
|
|||
|
bizarre, par exemple un tiret :
|
|||
|
</p>
|
|||
|
<pre><span class="prompt">brick ~ $</span> rm -bla
|
|||
|
rm: illegal option -- b
|
|||
|
usage: rm [-f | -i] [-dPRrvW] file ...
|
|||
|
unlink file
|
|||
|
<span class="prompt">brick ~ $</span> rm "-bla"
|
|||
|
rm: illegal option -- b
|
|||
|
usage: rm [-f | -i] [-dPRrvW] file ...
|
|||
|
unlink file
|
|||
|
</pre>
|
|||
|
<p class="continue">
|
|||
|
Pas bien brillant... La commande <code>rm</code> croit à cause du
|
|||
|
tiret initial qu'il s'agit d'options. Or il n'y a pas d'option
|
|||
|
<code>-b</code> pour <code>rm</code>. Solution : utiliser l'option
|
|||
|
<code>--</code> :
|
|||
|
</p>
|
|||
|
<pre><span class="prompt">brick ~ $</span> rm -- -bla
|
|||
|
remove -bla?
|
|||
|
</pre>
|
|||
|
<p class="continue">
|
|||
|
Une autre solution consiste à donner à <code>rm</code> un chemin,
|
|||
|
absolu ou relatif. Avec un chemin relatif, par exemple :
|
|||
|
</p>
|
|||
|
<pre><span class="prompt">brick ~ $</span> rm ./-bla
|
|||
|
remove -bla?
|
|||
|
</pre>
|
|||
|
<h3>
|
|||
|
<a name="s4_5" id="s4_5">Concaténer des fichiers</a>
|
|||
|
</h3>
|
|||
|
<p><dfn>Concaténer des fichiers</dfn>, c'est les placer bout à bout. On
|
|||
|
utilise la commande <code>cat</code> (comme <i lang="en" xml:lang="en">concatenate</i>) :
|
|||
|
</p>
|
|||
|
<pre><span class="prompt">brick ~ $</span> cat fichier1 fichier2 > fichier3
|
|||
|
</pre>
|
|||
|
<p class="continue">
|
|||
|
Les fichiers 1 et 2 placés bout à bout et le résultat est mis dans un
|
|||
|
<code>fichier3</code> créé automatiquement. Le <i lang="en" xml:lang="en">shell</i>
|
|||
|
refuse d'écraser un fichier existant.
|
|||
|
</p>
|
|||
|
<p class="continue">
|
|||
|
Dans <code>fichier3</code> apparaît d'abord <code>fichier1</code> puis
|
|||
|
<code>fichier2</code>. Concaténer deux fichiers de la sorte ne les
|
|||
|
détruit pas (il existe à la fois <code>fichier1</code>,
|
|||
|
<code>fichier2</code> et <code>fichier3</code>).
|
|||
|
</p>
|
|||
|
<p>
|
|||
|
On peut aussi placer deux fichiers bout à bout sans créer de troisième
|
|||
|
fichier. La syntaxe est alors la suivante :
|
|||
|
</p>
|
|||
|
<pre><span class="prompt">brick ~ $</span> cat fichier2 >> fichier1</pre>
|
|||
|
<p class="continue"><code>fichier2</code> est placé « au bout » de <code>fichier1</code>.
|
|||
|
<code>fichier2</code> reste inchangé, <code>fichier1</code> contient
|
|||
|
désormais son propre texte suivi du texte de <code>fichier2</code>.
|
|||
|
</p>
|
|||
|
<h2>
|
|||
|
<a name="s5" id="s5">Récapitulons (exemple)</a>
|
|||
|
</h2>
|
|||
|
<p>
|
|||
|
On veut renommer le fichier <code>chrono</code> du sous-répertoire
|
|||
|
<code>ancienne/</code> en <code>evolution</code>, et le mettre dans le
|
|||
|
répertoire <code>histoire/</code>. Dans cet exemple, nous sommes dans
|
|||
|
<code>histoire/ancienne/</code> :
|
|||
|
</p>
|
|||
|
<div class="illustration">
|
|||
|
<table class="tableau">
|
|||
|
<tr>
|
|||
|
<td>
|
|||
|
<p class="continue"><strong>(1)</strong> État de départ :</p>
|
|||
|
<img src="fichiers_ex1.png" alt="[histoire (ancienne (chrono, empire.tex))]" />
|
|||
|
</td>
|
|||
|
<td>
|
|||
|
<p class="continue">
|
|||
|
<strong>(2)</strong>
|
|||
|
<code>cp chrono evolution</code>
|
|||
|
</p>
|
|||
|
<img src="fichiers_ex2.png" alt="[histoire (ancienne (chrono, empire.tex, evolution))]" />
|
|||
|
</td>
|
|||
|
</tr>
|
|||
|
<tr>
|
|||
|
<td>
|
|||
|
<p class="continue">
|
|||
|
<strong>(3)</strong>
|
|||
|
<code>mv evolution ..</code>
|
|||
|
</p>
|
|||
|
<img src="fichiers_ex3.png" alt="[histoire (ancienne (chrono, empire.tex), evolution)]" />
|
|||
|
</td>
|
|||
|
<td>
|
|||
|
<p class="continue">
|
|||
|
<strong>(4)</strong>
|
|||
|
<code>rm chrono</code>
|
|||
|
</p>
|
|||
|
<img src="fichiers_ex4.png" alt="[histoire (ancienne (empire.tex), evolution)]" />
|
|||
|
</td>
|
|||
|
</tr>
|
|||
|
</table>
|
|||
|
</div>
|
|||
|
<p>
|
|||
|
On peut aussi faire plus rapidement :
|
|||
|
</p>
|
|||
|
<pre>
|
|||
|
mv chrono evolution
|
|||
|
mv evolution ..</pre>
|
|||
|
<p>
|
|||
|
Ou, en une seule ligne de commande :
|
|||
|
</p>
|
|||
|
<pre>
|
|||
|
mv chrono ../evolution</pre>
|
|||
|
<p>
|
|||
|
La même série d'opérations est possible depuis <code>histoire/</code>; elle se
|
|||
|
fera avec la suite de commandes suivantes :
|
|||
|
</p>
|
|||
|
<table class="tableau">
|
|||
|
<tr>
|
|||
|
<td>
|
|||
|
<pre>cp ancienne/chrono evolution
|
|||
|
rm ancienne/chrono</pre>
|
|||
|
</td>
|
|||
|
<td>On recopie le fichier <code>chrono</code> du sous-répertoire
|
|||
|
<code>ancienne/</code> en un second fichier <code>evolution</code> placé dans
|
|||
|
le répertoire courant : on se retrouve directement dans l'état 3.
|
|||
|
Ensuite, on efface le fichier <code>chrono</code> qui est toujours dans le
|
|||
|
répertoire <code>ancienne/</code>.</td>
|
|||
|
</tr>
|
|||
|
<tr>
|
|||
|
<td>
|
|||
|
<pre>mv ancienne/chrono ..
|
|||
|
mv chrono evolution</pre>
|
|||
|
</td>
|
|||
|
<td>D'abord on déplace le fichier, ensuite on le renomme.</td>
|
|||
|
</tr>
|
|||
|
<tr>
|
|||
|
<td>
|
|||
|
<pre>mv ancienne/chrono evolution</pre>
|
|||
|
</td>
|
|||
|
<td> En une seule ligne, on déplace le fichier et on le renomme.</td>
|
|||
|
</tr>
|
|||
|
</table>
|
|||
|
<p>
|
|||
|
Il y a donc rarement une seule façon de manipuler ses fichiers, c'est
|
|||
|
une question d'aisance et de rapidité.
|
|||
|
</p>
|
|||
|
<div class="metainformation">
|
|||
|
Auteurs : Émilia Robin (2002), Marie-Lan Nguyen (2004). Mise à jour :
|
|||
|
Marc Mezzarobba.
|
|||
|
Dernière modification : 2013-10-20 par Antoine Amarilli.
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</body>
|
|||
|
</html>
|