tuteurs.ens.fr/unix/fichiers.tml

465 lines
14 KiB
XML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html
PUBLIC "-//ENS/Tuteurs//DTD TML 1//EN"
"tuteurs://DTD/tml.dtd">
<html>
<head>
<title>Fichiers</title>
</head>
<body>
<h1>Manipuler les fichiers (<em>files</em>)</h1>
<h2><a name="comment">Comment un fichier est-il créé ?</a></h2>
<p>
Un fichier est un paquet d'informations : du texte, de la musique, une
image... Chaque objet que vous manipulez en informatique (une page Web, la
musique de Casimir, vos photos de vacances, un logiciel...) correspond à un
fichier. Quand vous écrivez un texte avec Word 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>
<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>.
</p>
<h2><a name="nom">Quel nom donner à ses fichiers ?</a></h2>
<p>
Les noms de fichiers s'écrivent avec des caractères alphanumériques (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 (les
remplacer par underscore <code>_</code>, tiret <code>-</code>, virgule
<code>,</code> ou point <code>.</code>). 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>), et de faire 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><a href="&url.tuteurs;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><a href="http://www.spi.ens.fr/install/ghostview.html"><code>gv</code></a> (Ghostview)</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="&url.tuteurs;internet/web/lynx.html">Navigateur</a>
(<code>netscape</code>, <code>links</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>.mp2</code> avec
<code>maplay</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><a href="http://www.spi.ens.fr/install/xv.html"><code>xv</code></a>
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><a href="http://www.spi.ens.fr/install/xanim.html"><code>xanim</code></a></td>
</tr>
<tr>
<td><code>.pdf</code></td>
<td>Portable Document Format</td>
<td><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>
<p>
De façon générale, tous les fichiers LaTeX ont un suffixe <code>.tex</code>,
et toutes les pages Web un suffixe <code>.html</code> (par exemple ce document
s'appelle <code>fichiers.html</code>).
</p>
<h2><a name="less"><code>less <em>fichier</em></code></a></h2>
<p>
Permet lire un fichier sans l'éditer (c'est-à-dire ouvrir un document afin de
pouvoir le modifier). Les commandes de base sont :
</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>
<h2><a name="more">Remarques sur <code>more</code> et <code>cat</code></a></h2>
<p>
<strong><code>cat</code></strong> a pour fonction première d'afficher un
fichier. Il est rapide et pratique pour un fichier très court, mais nous ne
vous le conseillons pas pour regarder un fichier un peu conséquent :
<code>cat</code> affiche le contenu du fichier d'un seul coup (si le texte
fait plus de 10-15 lignes, on ne voit rien). D'autre part, il ne permet aucune
recherche.
</p>
<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>
<h2>Manipuler les fichiers</h2>
<h3><a name="cp"><code>cp <em>nom1</em> <em>nom2</em></code> (<em>copy</em>)</a></h3>
<p>
Permet de recopier le fichier <code>nom1</code>dans un fichier
<code>nom2</code>. Ils seront donc identiques.
</p>
<p>
&icone.note;
<a href="exercices/cp_mv.html">Exercices sur cp</a>.
</p>
<h3><a name="mv"><code>mv <em>nom1</em> <em>nom2</em></code> (<em>move</em>,
déplacer et renommer)</a></h3>
<h4>Renommer</h4>
<p>
<code>mv truc chose</code> :
renomme le fichier ou le répertoire <code>truc</code> en <code>chose</code>.
</p>
<h4>Déplacer</h4>
<p>
<code>mv truc chose/</code> :
déplace le fichier <code>truc</code> dans le répertoire <code>chose/</code>.
</p>
<p>
<code>mv fichier ..</code> :
déplace un fichier dans le répertoire père (pour ce terme, voir dans le
tableau qui illustre <a href="repertoires.html#cd"><code>cd</code></a>).
</p>
<p>
&icone.note;
<a href="exercices/cp_mv.html">Exercices sur mv</a>.
</p>
<h3><a name="rm"><code>rm <em>fichier</em></code> (<em>remove</em>)</a></h3>
<p>
À ne jamais confondre avec <code>mv</code> ... Cette commande détruit le
fichier, de façon irréversible. Avec la config conscrits, confirmation est
demandée (option <code>-i</code> de <code>rm</code>). Ce n'est pas le cas
pour toutes les configurations : observez donc la plus grande prudence
avec cette commande...
</p>
<p>
<strong>Remarques</strong> : 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 SPI pour demander qu'on vous le récupère
(<code>spi@clipper</code>).
</p>
<p>
Il existe aussi <a href="&url.tuteurs;logiciels/rcs.html">RCS</a>, qui
enregistre des copies de sauvegarde de vos fichiers, et permet de gérer
les différentes versions de votre travail.
</p>
<h3>Exemple</h3>
<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>
<h2><a name="cat"><code>cat</code></a></h2>
<h3>Afficher un fichier</h3>
<p>
C'est pratique pour lire un fichier court, inutilisable sinon (voir les <a
href="#more">remarques à propos de more et de cat</a>). Dans cet usage,
<code>cat</code> sert surtout lorsque vous programmez.
</p>
<h3>Concaténer des fichiers</h3>
<pre>cat <em>fichier1</em> <em>fichier2</em> &gt; <em>fichier3 </em></pre>
<p>
Les fichiers 1 et 2 sont concaténés (placés bout à à bout) et le résultat est
mis dans un <code>fichier3</code> créé automatiquement. Le <em>shell</em>
refuse d'écraser un fichier existant.
</p>
<p>
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>cat fichier2 &gt;&gt; fichier1</pre>
<p>
<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>
<h3>Écrire</h3>
<p>
<code>cat</code> peut faire office d'éditeur minimaliste; tapez la commande
suivante, et quelques mots :
</p>
<pre>
<span class="prompt">corvette ~ $</span> cat &gt; notes
Faire les courses
Passer à la bibliothèque
...
</pre>
<p>
Et finissez par <code>^D</code>. Le fichier <code>notes</code> contient les
quelques lignes que vous avez saisies.
</p>
<h2><a name="head"><code>head <em>fichier</em></code> et <code>tail
<em>fichier</em></code></a></h2>
<p>
Par défaut, ces commandes montrent les dix premières (<code>head</code>) ou
les dix dernières (<code>tail</code>) lignes d'un fichier.
</p>
<p>
On peut utiliser l'option <code>-<em>nombre</em></code> pour spécifier le
nombre de lignes que l'on veut faire apparaître :
</p>
<pre>head -24 mon-fichier</pre>
<p>
affiche les 24 premières lignes du fichier.
</p>
<div class="metainformation">
Auteur : Émilia Robin.
Dernière modification le 2002-11-22.
</div>
</body>
</html>