diff --git a/unix/fichiers.tml b/unix/fichiers.tml index 3ee94f9..82a9202 100644 --- a/unix/fichiers.tml +++ b/unix/fichiers.tml @@ -8,49 +8,120 @@
--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 fichier est un paquet d'informations : 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.
-Une des opérations les plus courantes consiste à écrire du texte. Pour cela, -voir le cours sur les éditeurs de texte. +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.
-
-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 : document
et
-Document
sont deux fichiers distincts.
+Une des opérations les plus courantes consiste à écrire du texte. Pour
+cela, voir le cours sur les éditeurs de
+texte. 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
+index.html
(accueil d'une page Web), utilisez l'éditeur
+NEdit et tapez :
+
+brick ~/www/ $ nedit index.html
+
+
+
+
+Si vous êtes pressé, la commande cat
peut faire office
+d'éditeur minimaliste. Tapez la commande suivante, et quelques mots :
+
+brick ~ $ cat > notes
+Faire les courses
+Passer à la bibliothèque
+
+
+
+Et finissez par Ctrl+D
. Le fichier notes
+contient les quelques lignes que vous avez saisies.
+
+On peut aussi créer un fichier à l'aide de la commande
+touch
. touch toto
crée un fichier vide
+appelé « toto ». En fait, cette commande sert essentiellement à
+modifier la date de dernière modification d'un fichier.
+
www
un fichier vide appelé .last_modified
:
+
+brick ~/www/ $ touch .last_modified
+
+
+
+Votre page, désormais, ne figurera dans la liste des récentes
+modifications qu'après un nouveau touch
du fichier
+.last_modified
.
+
+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 : document
et Document
sont
+deux fichiers distincts.
-Il est préférable d'éviter les espaces dans les noms de fichiers (les
-remplacer par underscore _
, tiret -
, virgule
-,
ou point .
). 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 .
(par
-exemple .document
), 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 underscore (_
)
+ou un tiret (-
). :
+
+banque-de-france.tex +banque_centrale.dvi ++ +
+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 .
(par exemple
+.document
). Il est également sage d'éviter de donner des
+noms trop longs (même si en théorie vous avez droit à 255 caractères).
-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) :
more
et cat
-cat
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 :
-cat
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.
-
-more
(en savoir davantage sur un
-fichier) est une commande standard sur tous les systèmes Unix (alors que
-less
n'est pas installé partout). less
(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 more
à disposition,
-vous pouvez utiliser les commandes suivantes :
+more
(en savoir davantage sur
+un fichier) est une commande standard sur tous les systèmes Unix
+(alors que less
n'est pas installé
+partout). less
(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 more
à disposition, vous
+pouvez utiliser les commandes suivantes :
+On utilise la commande head
pour afficher le début d'un
+fichier :
+
+brick ~ $ 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
+(...)
+
+
+
+Par défaut, head
affiche les 10 premières lignes. Pour
+lui spécifier un nombre de lignes précis, utilisez l'option
+-n
, n étant le nombre de votre choix :
+
+brick ~ $ 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 +brick ~ $ ++ +
+« 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 place disque : +
+ +
+clipper ~ $ 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
+
+
++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 place +disque. +
+ +
+Cette fois, c'est la commande tail
qu'on utilise, avec
+les mêmes options que head
:
+
+brick ~ $ 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.
+
+
+
+Cette commande devient très intéressante avec l'option
+-f
: celle-ci dit à tail
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).
+
+Vous êtes en train de rédiger votre .htaccess
+(fichier de configuration du serveur Web, Apache) et vous voulez
+regarder en temps réel les messages d'erreur du serveur.
+
~webmaster/logs/access_log.curr
, 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 :
+
+clipper ~ $ tail -f ~webmaster/logs/access_log.curr | grep monlogin
+
+
+
+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
+tail
quand vous en avez assez, tapez Ctrl+C
.
+
cp nom1 nom2
(copy)
-Permet de recopier le fichier nom1
dans un fichier
-nom2
. Ils seront donc identiques.
+Copier un fichier, 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 cp
(comme cp). Pour copier toto.txt
en
+toto2.txt
:
+brick ~ $ cp toto.txt toto2.txt
+
+
+
+Notez qu'on ne peut pas se servir de cp
pour copier un
+répertoire. Ainsi, si vous essayez de copier votre répertoire
+www
, cp
va se plaindre :
+
+brick ~ $ cp www www2
+cp: www: is a directory
+
+
+cp
.
+
-&icone.note;
-Exercices sur cp.
+Renommer un fichier, c'est lui donner un nouveau nom, sans
+rien modifier d'autre. On utilise pour cela la commande
+mv
(comme move). Pour renommer
+dissert.tex
en dissertation.tex
:
mv nom1 nom2
(move,
-déplacer et renommer)
+brick ~ $ mv dissert.tex dissertation.tex
+
-mv truc chose
:
-renomme le fichier ou le répertoire truc
en chose
.
+La même commande sert également, avec la même syntaxe, pour les
+répertoires. Ainsi, si vous voulez renommer votre répertoire
+boulot
en répertoire magistere
:
+brick ~ $ mv boulot magistere
+
+
+
-mv truc chose/
:
-déplace le fichier truc
dans le répertoire chose/
.
+C'est toujours la commande mv
que l'on utilise. La
+syntaxe est la suivante : mv fichier
+nouvel_endroit
. Ainsi, vous voulez déplacez le fichier
+cv.html
, situé à la racine de votre compte, dans votre
+répertoire www
:
+brick ~ $ mv cv.html www
+
+
++Autre exemple : +
+ +
+brick ~ $ mv fichier ..
+
+
+
+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 cd
dans la
+page sur les répertoires.
+
mv
.
-mv fichier ..
:
-déplace un fichier dans le répertoire père (pour ce terme, voir dans le
-tableau qui illustre cd
).
+Sous Unix, effacer un fichier, c'est le détruire de façon
+irréversible. Pas de concept de poubelle dans
+laquelle on peut fouiller, comme sous Windows ou Mac OS. C'est la
+commande rm
(comme remove) qui efface un
+fichier :
-&icone.note; -Exercices sur mv. +
+brick ~ $ rm fichier
+
+
+rm
+vous demande de confirmer l'ordre d'effacement :
+
+brick ~ $ rm fichier
+rm: remove fichier (yes/no)?
+
+
+rm
que vous utilisez fait en fait rm
+-i
, comme vous le montrera la commande which
:
+
+brick ~ $ which rm
+rm: aliased to nocorrect rm -i
+
+
+
+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 rm
.
rm fichier
(remove)
-À ne jamais confondre avec mv
... Cette commande détruit le
-fichier, de façon irréversible. Avec la config conscrits, confirmation est
-demandée (option -i
de rm
). Ce n'est pas le cas
-pour toutes les configurations : observez donc la plus grande prudence
-avec cette commande...
-
-Remarques : 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
-(spi@clipper
).
-
Il existe aussi RCS, qui @@ -295,13 +579,177 @@ enregistre des copies de sauvegarde de vos fichiers, et permet de g les différentes versions de votre travail.
-
-On veut renommer le fichier
-chrono
du sous-répertoire ancienne/
en
-evolution
, et le mettre dans le répertoire
-histoire/
. 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 à rm
:
+
+brick ~ $ rm article_vn.tex article_leveque.tex article_leveque2.tex
+
+
+
+La commande pour effacer un répertoire est rmdir
+(cf. notre page sur les répertoires),
+mais elle ne marche que si le répertoire est vide. La commande
+rm
ne peut pas effacer directement un répertoire :
+
+brick ~ $ rm www
+rm: www is a directory
+
+
+
+Pour effacer un répertoire et son contenu, utilisez l'option
+-R
(comme recursive de
+rm
. Pour effacer votre répertoire toto/
et
+les fichiers qu'il contient, tapez :
+
+brick ~ $ rm -R toto
+
+
+rm
est en fait rm -i
,
+rm
vous demandera confirmation pour chacun des fichiers
+contenus dans le répertoire toto/
:
+
+brick ~ $ 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)?
+(...)
+
+
+
+Si vous trouvez fastidieux de devoir répondre oui à chaque fois, vous
+pouvez utiliser en plus l'option -f
(comme force) de rm
. Cette option supplante
+l'option -i
et efface irrémédiablement sans
+demander confirmation. Faites donc très attention avec.
+
+Comment effacer des fichiers qui comment par des caractères bizarres,
+ou qui comportent des espaces dans leur nom ? La commande
+rm
semble devenir subitement inefficace ! Essayons
+d'abord avec un fichier avec des espaces :
+
+brick ~ $ 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
+
+
+
+En fait, rm
croit que vous voulez effacer d'abord un
+fichier appelé siècle
, puis un autre appelé
+de
, etc. La solution est de mettre le nom du fichier
+entre guillemets ("), et rm
l'efface sans problème :
+
+brick ~ $ rm "siècle de périclès.doc" +remove siècle de périclès.doc? y +brick ~ $ ++ +
+Essayons maintenant avec un fichier commençant par un caractère +bizarre, par exemple un tiret : +
+ ++brick ~ $ rm -bla +rm: illegal option -- b +usage: rm [-f | -i] [-dPRrvW] file ... + unlink file +brick ~ $ rm "-bla" +rm: illegal option -- b +usage: rm [-f | -i] [-dPRrvW] file ... + unlink file ++ +
+Pas bien brillant... La commande rm
croit à cause du
+tiret initial qu'il s'agit d'options. Or il n'y a pas d'option
+-b
pour rm
. Solution : utiliser l'option
+--
:
+
+brick ~ $ rm -- -bla
+remove -bla?
+
+
+
+Une autre solution consiste à donner à rm
un chemin,
+absolu ou relatif. Avec un chemin relatif, par exemple :
+
+brick ~ $ rm ./-bla
+remove -bla?
+
+
+
+Concaténer des fichiers, c'est les placer bout à bout. On
+utilise la commande cat
(comme concatenate) :
+
+brick ~ $ cat fichier1 fichier2 > fichier3
+
+
+
+Les fichiers 1 et 2 placés bout à bout et le résultat est mis dans un
+fichier3
créé automatiquement. Le shell
+refuse d'écraser un fichier existant.
+
+Dans fichier3
apparaît d'abord fichier1
puis
+fichier2
. Concaténer deux fichiers de la sorte ne les
+détruit pas (il existe à la fois fichier1
,
+fichier2
et fichier3
).
+
+On peut aussi placer deux fichiers bout à bout sans créer de troisième +fichier. La syntaxe est alors la suivante : +
+ +
+brick ~ $ cat fichier2 >> fichier1
+
+
+fichier2
est placé « au bout » de fichier1
.
+fichier2
reste inchangé, fichier1
contient
+désormais son propre texte suivi du texte de fichier2
.
+
+On veut renommer le fichier chrono
du sous-répertoire
+ancienne/
en evolution
, et le mettre dans le
+répertoire histoire/
. Dans cet exemple, nous sommes dans
histoire/ancienne/
:
-Il y a donc rarement une seule façon de manipuler ses fichiers, c'est une -question d'aisance et de rapidité. -
- - -cat
-C'est pratique pour lire un fichier court, inutilisable sinon (voir les remarques à propos de more et de cat). Dans cet usage,
-cat
sert surtout lorsque vous programmez.
-
cat fichier1 fichier2 > fichier3- -
-Les fichiers 1 et 2 sont concaténés (placés bout à à bout) et le résultat est
-mis dans un fichier3
créé automatiquement. Le shell
-refuse d'écraser un fichier existant.
-
-Dans fichier3
apparaît d'abord fichier1
puis
-fichier2
. Concaténer deux fichiers de la sorte ne les détruit
-pas (il existe à la fois fichier1
, fichier2
et
-fichier3
).
-
-On peut aussi placer deux fichiers bout à bout sans créer de troisième -fichier. La syntaxe est alors la suivante : -
- -cat fichier2 >> fichier1- -
-fichier2
est placé « au bout » de fichier1
.
-fichier2
reste inchangé, fichier1
contient désormais
-son propre texte suivi du texte de fichier2
.
-
-cat
peut faire office d'éditeur minimaliste; tapez la commande
-suivante, et quelques mots :
-
-corvette ~ $ cat > notes
-Faire les courses
-Passer à la bibliothèque
-...
-
-
-
-Et finissez par ^D
. Le fichier notes
contient les
-quelques lignes que vous avez saisies.
-
head fichier
et tail
-fichier
-Par défaut, ces commandes montrent les dix premières (head
) ou
-les dix dernières (tail
) lignes d'un fichier.
-
-On peut utiliser l'option -nombre
pour spécifier le
-nombre de lignes que l'on veut faire apparaître :
-
head -24 mon-fichier- -
-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é.