Réorganisation du fichier :
o on organise par opération (lire un fichier, renommer un fichier, etc.) plutôt que par commande. o ajout d'exemples o ajout de commandes (touch) et d'options (tail -f, rm -R, rm -f, rm --)
This commit is contained in:
parent
668178d736
commit
cbeb660993
1 changed files with 542 additions and 173 deletions
|
@ -8,49 +8,120 @@
|
|||
</head>
|
||||
<body>
|
||||
|
||||
<h1>Manipuler les fichiers (<em>files</em>)</h1>
|
||||
<h1>Manipuler les fichiers</h1>
|
||||
|
||||
<h2><a name="comment">Comment un fichier est-il créé ?</a></h2>
|
||||
<h2><a name="comment">Créer un fichier</a></h2>
|
||||
|
||||
<h3>Généralités</h3>
|
||||
|
||||
<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.
|
||||
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>
|
||||
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 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>
|
||||
|
||||
<h2><a name="nom">Quel nom donner à ses fichiers ?</a></h2>
|
||||
<h3>Créer un fichier texte</h3>
|
||||
|
||||
<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.
|
||||
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
|
||||
<a href="editeurs/nedit.html">NEdit</a> et tapez :
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
<span class="prompt">brick ~/www/ $</span> nedit 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>Créer un fichier vide</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">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 (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).
|
||||
Il est préférable d'é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>). :
|
||||
</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) :
|
||||
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">
|
||||
|
@ -132,11 +203,46 @@ 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>
|
||||
<h2><a name="less">Lire un fichier</a></h2>
|
||||
|
||||
<h3>Lire un fichier avec <code>cat</code></h3>
|
||||
|
||||
<p>
|
||||
Permet lire un fichier sans l'éditer (c'est-à-dire ouvrir un document afin de
|
||||
pouvoir le modifier). Les commandes de base sont :
|
||||
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>Les <i lang="en">pagers</i> <code>more</code> et
|
||||
<code>less</code></h3>
|
||||
|
||||
<p>
|
||||
Mieux vaut alors utiliser ce qu'en anglais on appelle un <i
|
||||
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">
|
||||
|
@ -185,25 +291,15 @@ tout le texte. Pour aller
|
|||
</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 :
|
||||
<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">
|
||||
|
@ -229,65 +325,253 @@ qu'avec <code>less</code> ).</td>
|
|||
</tr>
|
||||
</table>
|
||||
|
||||
<h3>Afficher le début d'un fichier</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">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>
|
||||
|
||||
<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="&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.
|
||||
</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">clipper ~ $</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>Manipuler les fichiers</h2>
|
||||
|
||||
<h3><a name="cp"><code>cp <em>nom1</em> <em>nom2</em></code> (<em>copy</em>)</a></h3>
|
||||
<h3>Copier un fichier</h3>
|
||||
|
||||
<p>
|
||||
Permet de recopier le fichier <code>nom1</code>dans un fichier
|
||||
<code>nom2</code>. Ils seront donc identiques.
|
||||
<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">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">Renommer un fichier</a> ou un répertoire</h3>
|
||||
|
||||
<p>
|
||||
&icone.note;
|
||||
<a href="exercices/cp_mv.html">Exercices sur cp</a>.
|
||||
<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> :
|
||||
</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>
|
||||
<pre>
|
||||
<span class="prompt">brick ~ $</span> mv dissert.tex dissertation.tex
|
||||
</pre>
|
||||
|
||||
<p>
|
||||
<code>mv truc chose</code> :
|
||||
renomme le fichier ou le répertoire <code>truc</code> en <code>chose</code>.
|
||||
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>
|
||||
|
||||
<h4>Déplacer</h4>
|
||||
<pre>
|
||||
<span class="prompt">brick ~ $</span> mv boulot magistere
|
||||
</pre>
|
||||
|
||||
<h3>Déplacer un fichier</h3>
|
||||
|
||||
<p>
|
||||
<code>mv truc chose/</code> :
|
||||
déplace le fichier <code>truc</code> dans le répertoire <code>chose/</code>.
|
||||
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">Effacer un fichier</a></h3>
|
||||
|
||||
<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>).
|
||||
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">remove</i>) qui efface un
|
||||
fichier :
|
||||
</p>
|
||||
|
||||
<p>
|
||||
&icone.note;
|
||||
<a href="exercices/cp_mv.html">Exercices sur mv</a>.
|
||||
<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>
|
||||
|
||||
<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>
|
||||
<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="&url.tuteurs;logiciels/rcs/">RCS</a>, qui
|
||||
|
@ -295,13 +579,177 @@ enregistre des copies de sauvegarde de vos fichiers, et permet de g
|
|||
les différentes versions de votre travail.
|
||||
</p>
|
||||
|
||||
<h3>Exemple</h3>
|
||||
<h4>Effacer plusieurs fichiers en même temps</h4>
|
||||
|
||||
<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
|
||||
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">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">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>Concaténer des fichiers</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">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">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>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épertoire <code>histoire/</code>. Dans cet exemple, nous sommes dans
|
||||
<code>histoire/ancienne/</code> :
|
||||
</p>
|
||||
|
||||
|
@ -374,92 +822,13 @@ mv chrono evolution</pre></td>
|
|||
</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> > <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 >> 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 > 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.
|
||||
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">
|
||||
Auteur : Émilia Robin.
|
||||
Dernière modification le 2002-11-22.
|
||||
Auteur : Émilia Robin (2002), Marie-Lan Nguyen (2004).
|
||||
Dernière modification : le <date value="$Date: 2004-03-14 15:00:56 $" />.
|
||||
</div>
|
||||
|
||||
</body>
|
||||
|
|
Loading…
Add table
Reference in a new issue