tuteurs.ens.fr/unix/fichiers.tml

836 lines
24 KiB
Text
Raw Normal View History

2002-11-22 20:19:50 +01:00
<?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</h1>
2002-11-22 20:19:50 +01:00
<h2><a name="comment">Cr<43>er un fichier</a></h2>
<h3>G<>n<EFBFBD>ralit<69>s</h3>
2002-11-22 20:19:50 +01:00
<p>
Un <dfn>fichier</dfn> est un <em>paquet d'informations</em><3E>: ce peut
<EFBFBD>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 <20> un
fichier.
2002-11-22 20:19:50 +01:00
</p>
<p>
Quand vous <20>crivez un texte avec OpenOffice.org et que vous le
sauvegardez sous le nom <20><>Rapport<72>de<64>ma<6D>trise<73><65>, vous cr<63>ez un fichier
<EFBFBD> ce nom, <20>crit sur le disque dur. Chaque fois que vous <20>crivez
quelque chose sur le disque, vous cr<63>ez un ou plusieurs fichiers.
2002-11-22 20:19:50 +01:00
</p>
<h3>Cr<43>er un fichier texte</h3>
2002-11-22 20:19:50 +01:00
<p>
Une des op<6F>rations les plus courantes consiste <20> <20>crire du texte. Pour
cela, voir le cours sur les <a href="editeurs/"><3E>diteurs de
texte</a>. Quand on vous demande de cr<63>er un fichier, g<>n<EFBFBD>ralement il
faut utiliser un <20>diteur de texte. Ainsi, pour cr<63>er le fichier
<code>index.html</code> (accueil d'une page Web), utilisez l'<27>diteur
<a href="editeurs/nedit.html">NEdit</a> et tapez<65>:
2002-11-22 20:19:50 +01:00
</p>
<pre>
<span class="prompt">brick ~/www/ $</span> nedit index.html
</pre>
2002-11-22 20:19:50 +01:00
<p>
Si vous <20>tes press<73>, la commande <code>cat</code> peut faire office
d'<27>diteur minimaliste. Tapez la commande suivante, et quelques mots<74>:
2002-11-22 20:19:50 +01:00
</p>
<pre>
<span class="prompt">brick ~ $</span> cat &gt; notes
Faire les courses
Passer <20> la biblioth<74>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>Cr<43>er un fichier vide</h3>
2002-11-22 20:19:50 +01:00
<p>
On peut aussi cr<63>er un fichier <20> l'aide de la commande
<code>touch</code>. <code>touch toto</code> cr<63>e un fichier vide
appel<EFBFBD> <20><>toto<74><6F>. En fait, cette commande sert essentiellement <20>
modifier la date de derni<6E>re modification d'un fichier.
</p>
<div class="ens">
<strong>Application<6F>:</strong> vous avez une page Web sur le serveur
des <20>l<EFBFBD>ves et que vous ne voulez pas qu'<27> chaque virgule modifi<66>e, on
voie votre page dans la liste des <a
href="http://www.eleves.ens.fr/home/index-time.html.fr">pages
r<EFBFBD>cemment modifi<66>es</a>. Cr<43>ez alors dans votre r<>pertoire
<code>www</code> un fichier vide appel<65> <code>.last_modified</code><3E>:
</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<70>s un nouveau <code>touch</code> du fichier
<code>.last_modified</code>.
</p>
<h2><a name="nom">Nommer ses fichiers</a></h2>
<p>
Les noms de fichiers s'<27>crivent avec des caract<63>res
<dfn>alphanum<75>riques</dfn> (lettres et chiffres). On peut utiliser
des majuscules et des minuscules, mais elles ne sont pas
interchangeables<EFBFBD>: <code>document</code> et <code>Document</code> sont
deux fichiers distincts.
</p>
<p>
Il est pr<70>f<EFBFBD>rable d'<27>viter les espaces dans les noms de fichiers. On
peut les remplacer par un <i lang="en">underscore</i> (<code>_</code>)
ou un tiret (<code>-</code>).<2E>:
</p>
<pre>
banque-de-france.tex
banque_centrale.dvi
</pre>
<p class="continue">
Il vaut mieux <20>viter les caract<63>res accentu<74>s, et proscrire le reste
(ponctuations diverses, signes bizarres). Il faut aussi <20>viter de
faire commencer un fichier par un <code>.</code> (par exemple
<code>.document</code>). Il est <20>galement sage d'<27>viter de donner des
noms trop longs (m<>me si en th<74>orie vous avez droit <20> 255 caract<63>res).
</p>
<p>
Certains fichiers ont des suffixes conventionnels qui les identifient
aupr<EFBFBD>s des utilisateurs et de certains programmes (liste non
exhaustive de suffixes et d'outils)<29>:
2002-11-22 20:19:50 +01:00
</p>
<table class="tableau">
<tr>
<th>Suffixe</th>
<th>Nature</th>
<th>Logiciel <20> utiliser</th>
</tr>
<tr>
<td><code>.tex</code></td>
<td>Fichier source pour LaTeX</td>
<td><a href="editeurs/"><3E>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><3E> 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/"><3E>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>
2002-11-22 20:19:50 +01:00
(<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'<27>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<65>; <code>gimp</code> pour les modifier</td>
</tr>
<tr>
<td><code>.mov</code>, <code>.avi</code></td>
<td>S<>quences anim<69>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<73>s</td>
<td>Consultez la page sur la <a href="archives.html">compression</a></td>
</tr>
</table>
<p>
De fa<66>on g<>n<EFBFBD>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">Lire un fichier</a></h2>
2004-08-20 13:34:12 +02:00
<h3><a name="cat">Lire un fichier avec <code>cat</code></a></h3>
<p>
Pour pouvoir consulter un fichier (sans l'<27>diter), le plus simple est
la commande <code>cat</code><3E>:
</p>
<pre>
<span class="prompt">brick ~ $</span> cat <kbd>fichier</kbd>
</pre>
<p class="continue">
Le probl<62>me est que <code>cat</code> affiche l'int<6E>gralit<69> du fichier
que vous lui demandez. Si le fichier est plus long que la taille de
votre <20>cran (ce qui arrive quand m<>me souvent), vous verrez d<>filer
tr<EFBFBD>s vite <20> l'<27>cran le contenu de votre fichier, sans pouvoir
l'arr<72>ter ou le ralentir. Pas tr<74>s pratique...
</p>
<h3>Les <i lang="en">pagers</i> <code>more</code> et
<code>less</code></h3>
2002-11-22 20:19:50 +01:00
<p>
Mieux vaut alors utiliser ce qu'en anglais on appelle un <i
lang="en">pager</i> (parfois traduit par <20><>visionneuse<73><65> en
fran<EFBFBD>ais). Le nom <20><>pager<65><72> 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<6E>:
</p>
<pre>
<span class="prompt">brick ~ $</span> less toto.txt
</pre>
<p class="continue">
Voici un tableau des commandes utiles de <code>less</code><3E>:
2002-11-22 20:19:50 +01:00
</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-<2D>cran</td>
</tr>
<tr>
<td><code>f, ^F</code> (<em>forward</em>)</td><td>descendre d'un <20>cran</td>
</tr>
<tr>
<td><code>p, ^P</code> (<em>previous</em>)</td><td>remonter d'un demi-<2D>cran</td>
</tr>
<tr>
<td><code>b, ^B</code> (<em>back</em>)</td><td>remonter d'un <20>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 <20> la fin du texte</td>
</tr>
<tr>
<td><code><em>nombre</em>G</code></td>
<td>aller <20> la ligne de num<75>ro <em>nombre</em> (par exemple, <code>1G</code>
place <20> la premi<6D>re ligne du fichier).</td>
</tr>
<tr>
<td><code>/mot</code></td>
<td>chercher le <20><>mot<6F><74> dans le texte. Il sera signal<61> en inverse dans
tout le texte. Pour aller <20> la prochaine occurence du mot, taper
<code>n</code>, pour aller <20> la pr<70>c<EFBFBD>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<73>mes Unix
(alors que <code>less</code> n'est pas install<6C>
partout). <code>less</code> (install<6C> <20> l'<27>cole) est cependant plus
performant<EFBFBD>: les mots recherch<63>s apparaissent sur fond noir au lieu
d'<27>tre juste plac<61>s en haut de l'<27>cran, le d<>filement du texte est
plus pr<70>cis. Si vous n'avez que <code>more</code> <20> disposition, vous
pouvez utiliser les commandes suivantes<65>:
2002-11-22 20:19:50 +01:00
</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-<2D>cran</td>
</tr>
<tr>
<td><code>f</code> (<em> forward</em>)</td><td>descendre d'un <20>cran</td>
</tr>
<tr>
<td><code>b</code> (<em> back</em>)</td><td>remonter d'un demi-<2D>cran</td>
</tr>
<tr>
<td><code>/mot</code></td>
<td>chercher le <20><>mot<6F><74> 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>
2004-08-20 13:34:12 +02:00
<h3><a name="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<EFBFBD>:
</p>
<pre>
<span class="prompt">brick ~ $</span> head point_de_lendemain.txt
J'aimais <20>perdumment la comtesse de ...&nbsp;; j'avais vingt ans, et
j'<27>tais ing<6E>nu&nbsp;; elle me trompa, je me f<>chai, elle me
quitta. J'<27>tais ing<6E>nu, je la regrettai&nbsp;; j'avais vingt ans, elle
me pardonna&nbsp;: et comme j'avais vingt ans, que j'<27>tais ing<6E>nu,
toujours tromp<6D>, mais plus quitt<74>, je me croyais l'amant le mieux
(...)
</pre>
2002-11-22 20:19:50 +01:00
<p class="continue">
Par d<>faut, <code>head</code> affiche les 10 premi<6D>res lignes. Pour
lui sp<73>cifier un nombre de lignes pr<70>cis, utilisez l'option
<code>-n</code>, <var>n</var> <20>tant le nombre de votre choix<69>:
</p>
<pre>
<span class="prompt">brick ~ $</span> head -2 point_de_lendemain.txt
J'aimais <20>perdumment la comtesse de ...&nbsp;; j'avais vingt ans, et
j'<27>tais ing<6E>nu&nbsp;; elle me trompa, je me f<>chai, elle me
<span class="prompt">brick ~ $</span>
</pre>
2002-11-22 20:19:50 +01:00
<p>
<EFBFBD><EFBFBD>Mais <20> quoi est-ce que <20>a peut bien servir<69>?<3F><>, vous direz-vous. L<>,
comme <20>a, c'est vrai que l'utilit<69> est limit<69>e. Mais en combinaison
avec d'autres commandes, c'est tr<74>s utile. Un exemple tir<69> de notre
page sur la <a href="place_disque.html">place disque</a><3E>:
2002-11-22 20:19:50 +01:00
</p>
<pre>
<span class="prompt">clipper ~ $</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>Afficher la fin d'un fichier</h3>
2002-11-22 20:19:50 +01:00
<p>
Cette fois, c'est la commande <code>tail</code> qu'on utilise, avec
les m<>mes options que <code>head</code><3E>:
2002-11-22 20:19:50 +01:00
</p>
<pre>
<span class="prompt">brick ~ $</span> tail -3 point_de_lendemain.txt
sensible. Adieu, encore une fois. Vous <20>tes charmant... Ne me
brouillez pas avec la Comtesse&nbsp;&#187;. Elle me serra la main, et
me quitta.
</pre>
2002-11-22 20:19:50 +01:00
<p>
Cette commande devient tr<74>s int<6E>ressante avec l'option
<code>-f</code><3E>: celle-ci dit <20> <code>tail</code> de ne pas s'arr<72>ter
<EFBFBD> la fin du fichier, mais de continuer <20> afficher les nouvelles
informations qui seraient ajout<75>es au fichier. Une applications
typique est la surveillance des fichiers de logs (journaux o<> le
syst<EFBFBD>me, ou certains programmes, consignent des informations sur leur
travail).
</p>
<h4>Application</h4>
2002-11-22 20:19:50 +01:00
<p>
Vous <20>tes en train de r<>diger votre <a
href="&url.tuteurs;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.
2002-11-22 20:19:50 +01:00
</p>
<div class="ens">
Ces messages d'erreur, <20> l'ENS, sont dans
<code>~webmaster/logs/access_log.curr</code>, il faut donc surveiller
les messages d'erreur sui arrivent au fur et <20> mesure que vous faites
vos essais. Tapez dans l'une de vos fen<65>tres la commande suivante<74>:
</div>
<pre>
<span class="prompt">clipper ~ $</span> tail -f ~webmaster/logs/access_log.curr | grep monlogin
</pre>
<p class="continue">
et vous verrez s'afficher, au fur et <20> mesure et en temps r<>el, toutes
les erreurs qui contiennent votre login, donc vos pages. Pour arr<72>ter
<code>tail</code> quand vous en avez assez, tapez <code>Ctrl+C</code>.
</p>
<h2>Manipuler les fichiers</h2>
<h3>Copier un fichier</h3>
2002-11-22 20:19:50 +01:00
<p>
<dfn>Copier un fichier</dfn>, c'est prendre un fichier d<>j<EFBFBD> existant
et en cr<63>er une copie rigoureusement identique sous un nom
diff<EFBFBD>rent. On utilise pour cela la commande <code>cp</code> (comme <i
lang="en">cp</i>). Pour copier <code>toto.txt</code> en
<code>toto2.txt</code><3E>:
</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<EFBFBD>pertoire. Ainsi, si vous essayez de copier votre r<>pertoire
<code>www</code>, <code>cp</code> va se plaindre<72>:
2002-11-22 20:19:50 +01:00
</p>
<pre>
<span class="prompt">brick ~ $</span> cp www www2
cp: www: is a directory
</pre>
<div class="encadre">
<strong>S'exercer<65>:</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">Renommer un fichier</a> ou un r<>pertoire</h3>
2002-11-22 20:19:50 +01:00
<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">move</i>). Pour renommer
<code>dissert.tex</code> en <code>dissertation.tex</code><3E>:
2002-11-22 20:19:50 +01:00
</p>
<pre>
<span class="prompt">brick ~ $</span> mv dissert.tex dissertation.tex
</pre>
2002-11-22 20:19:50 +01:00
<p>
La m<>me commande sert <20>galement, avec la m<>me syntaxe, pour les
r<EFBFBD>pertoires. Ainsi, si vous voulez renommer votre r<>pertoire
<code>boulot</code> en r<>pertoire <code>magistere</code><3E>:
2002-11-22 20:19:50 +01:00
</p>
<pre>
<span class="prompt">brick ~ $</span> mv boulot magistere
</pre>
<h3>D<>placer un fichier</h3>
2002-11-22 20:19:50 +01:00
<p>
C'est toujours la commande <code>mv</code> que l'on utilise. La
syntaxe est la suivante<74>: <code>mv fichier
nouvel_endroit</code>. Ainsi, vous voulez d<>placez le fichier
<code>cv.html</code>, situ<74> <20> la racine de votre compte, dans votre
r<EFBFBD>pertoire <code>www</code><3E>:
</p>
<pre>
<span class="prompt">brick ~ $</span> mv cv.html www
</pre>
<p class="continue">
Autre exemple<6C>:
</p>
<pre>
<span class="prompt">brick ~ $</span> mv fichier ..
</pre>
<p class="continue">
d<EFBFBD>place un fichier dans le r<>pertoire p<>re &mdash;<3B>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>.
2002-11-22 20:19:50 +01:00
</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">Effacer un fichier</a></h3>
2002-11-22 20:19:50 +01:00
<p>
Sous Unix, <dfn>effacer un fichier</dfn>, c'est le d<>truire de fa<66>on
<strong>irr<72>versible</strong>. Pas de concept de poubelle dans
laquelle on peut fouiller, comme sous Windows ou Mac<61>OS. C'est la
commande <code>rm</code> (comme <i lang="en">remove</i>) qui efface un
fichier<EFBFBD>:
2002-11-22 20:19:50 +01:00
</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<6E>:
</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><3E>:
</div>
<pre>
<span class="prompt">brick ~ $</span> which rm
rm: aliased to nocorrect rm -i
</pre>
<p class="continue">
Cette pr<70>caution <20>vite le fameux doigt qui glisse et autres erreurs
qui effacent par m<>garde des fichiers importants. Mais cette
pr<EFBFBD>caution n'existe pas pour toutes les configurations<6E>: observez donc
la plus grande prudence en utilisant <code>rm</code>.
</p>
<div class="encadre">
<strong>Remarque</strong><3E>: <20> l'ENS, les partitions utilisateurs sont
sauvegard<EFBFBD>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 <20>lectronique au <a
href="http://www.spi.ens.fr/">SPI</a> pour demander qu'on vous le
r<EFBFBD>cup<EFBFBD>re.
</div>
2002-11-22 20:19:50 +01:00
<p>
Il existe aussi <a href="&url.tuteurs;logiciels/rcs/">RCS</a>, qui
2002-11-22 20:19:50 +01:00
enregistre des copies de sauvegarde de vos fichiers, et permet de g<>rer
les diff<66>rentes versions de votre travail.
</p>
<h4>Effacer plusieurs fichiers en m<>me temps</h4>
2002-11-22 20:19:50 +01:00
<p>
Nettoyage de printemps sur votre compte, vous voulez supprimer
plusieurs fichiers en m<>me temps. Il suffit tout simplement de les
indiquer <20> la suite <20> <code>rm</code><3E>:
</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<72>:
</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">recursive</i> de
<code>rm</code>. Pour effacer votre r<>pertoire <code>toto/</code> et
les fichiers qu'il contient, tapez<65>:
</p>
<pre>
<span class="prompt">brick ~ $</span> rm -R toto
</pre>
<div class="ens">
<EFBFBD> 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><3E>:
</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 <20> chaque fois, vous
pouvez utiliser en plus l'option <code>-f</code> (comme <i
lang="en">force</i>) de <code>rm</code>. Cette option supplante
l'option <code>-i</code> et <strong>efface irr<72>m<EFBFBD>diablement sans
demander confirmation</strong>. Faites donc tr<74>s attention avec.
</p>
<h4>Effacer des fichiers au nom exotique</h4>
<p>
Comment effacer des fichiers qui comment par des caract<63>res bizarres,
ou qui comportent des espaces dans leur nom<6F>? La commande
<code>rm</code> semble devenir subitement inefficace<63>! Essayons
d'abord avec un fichier avec des espaces :
</p>
<pre>
<span class="prompt">brick ~ $</span> rm si<73>cle de p<>ricl<63>s.doc
rm: si<73>cle: No such file or directory
rm: de: No such file or directory
rm: p<>ricl<63>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<65> <code>si<73>cle</code>, puis un autre appel<65>
<code>de</code>, etc. La solution est de mettre le nom du fichier
entre guillemets (&quot;), et <code>rm</code> l'efface sans probl<62>me<6D>:
</p>
<pre>
<span class="prompt">brick ~ $</span> rm "si<73>cle de p<>ricl<63>s.doc"
remove si<73>cle de p<>ricl<63>s.doc? y
<span class="prompt">brick ~ $</span>
</pre>
<p>
Essayons maintenant avec un fichier commen<65>ant par un caract<63>re
bizarre, par exemple un tiret<65>:
</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 <20> 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<6F>: utiliser l'option
<code>--</code><3E>:
</p>
<pre>
<span class="prompt">brick ~ $</span> rm -- -bla
remove -bla?
</pre>
<p class="continue">
Une autre solution consiste <20> donner <20> <code>rm</code> un chemin,
absolu ou relatif. Avec un chemin relatif, par exemple<6C>:
</p>
<pre>
<span class="prompt">brick ~ $</span> rm ./-bla
remove -bla?
</pre>
<h3>Concat<61>ner des fichiers</h3>
<p>
<dfn>Concat<61>ner des fichiers</dfn>, c'est les placer bout <20> bout. On
utilise la commande <code>cat</code> (comme <i
lang="en">concatenate</i>)<29>:
</p>
<pre>
<span class="prompt">brick ~ $</span> cat fichier1 fichier2 &gt; fichier3
</pre>
<p class="continue">
Les fichiers 1 et 2 plac<61>s bout <20> bout et le r<>sultat est mis dans un
<code>fichier3</code> cr<63><72> automatiquement. Le <i lang="en">shell</i>
refuse d'<27>craser un fichier existant.
</p>
<p class="continue">
Dans <code>fichier3</code> appara<72>t d'abord <code>fichier1</code> puis
<code>fichier2</code>. Concat<61>ner deux fichiers de la sorte ne les
d<EFBFBD>truit pas (il existe <20> la fois <code>fichier1</code>,
<code>fichier2</code> et <code>fichier3</code>).
</p>
<p>
On peut aussi placer deux fichiers bout <20> bout sans cr<63>er de troisi<73>me
fichier. La syntaxe est alors la suivante<74>:
</p>
<pre>
<span class="prompt">brick ~ $</span> cat fichier2 &gt;&gt; fichier1</pre>
<p class="continue">
<code>fichier2</code> est plac<61> <20><>au bout<75><74> de <code>fichier1</code>.
<code>fichier2</code> reste inchang<6E>, <code>fichier1</code> contient
d<EFBFBD>sormais son propre texte suivi du texte de <code>fichier2</code>.
</p>
<h2>R<>capitulons (exemple)</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<EFBFBD>pertoire <code>histoire/</code>. Dans cet exemple, nous sommes dans
2002-11-22 20:19:50 +01:00
<code>histoire/ancienne/</code><3E>:
</p>
<div class="illustration">
<table class="tableau">
<tr>
<td>
<p class="continue"><strong>(1)</strong> <20>tat de d<>part<72>:</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<6E>:
</p>
<pre>
mv chrono evolution
mv evolution ..</pre>
<p>
Ou, en une seule ligne de commande<64>:
</p>
<pre>
mv chrono ../evolution</pre>
<p>
La m<>me s<>rie d'op<6F>rations est possible depuis <code>histoire/</code>; elle se
fera avec la suite de commandes suivantes<65>:
</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<61> dans
le r<>pertoire courant<6E>: on se retrouve directement dans l'<27>tat 3.
Ensuite, on efface le fichier <code>chrono</code> qui est toujours dans le
r<EFBFBD>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<66>on de manipuler ses fichiers, c'est
une question d'aisance et de rapidit<69>.
2002-11-22 20:19:50 +01:00
</p>
<div class="metainformation">
Auteur<75>: <20>milia Robin (2002), Marie-Lan Nguyen (2004).
2004-08-20 13:34:12 +02:00
Derni<EFBFBD>re modification&nbsp;: le <date value="$Date: 2004-08-20 11:34:13 $" />.
2002-11-22 20:19:50 +01:00
</div>
</body>
</html>