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:
mlnguyen 2004-03-14 15:00:56 +00:00
parent 668178d736
commit cbeb660993

View file

@ -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 &gt; 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 ...&nbsp;; j'avais vingt ans, et
j'étais ingénu&nbsp;; elle me trompa, je me fâchai, elle me
quitta. J'étais ingénu, je la regrettai&nbsp;; j'avais vingt ans, elle
me pardonna&nbsp;: 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 ...&nbsp;; j'avais vingt ans, et
j'étais ingénu&nbsp;; 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&nbsp;&#187;. 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 &mdash; 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 (&quot;), 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 &gt; 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 &gt;&gt; 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> &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.
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&nbsp;: le <date value="$Date: 2004-03-14 15:00:56 $" />.
</div>
</body>