Cours Unix Comparer des fichiers: cmp, diff, patch

Support de cours Unix comparer des fichiers: cmp, diff, patch, tutoriel & guide de travaux pratiques UNIX en pdf.

Comparer des fichiers
La commande cmp
cmp fichier1 fichier2
cmp compare deux fichiers de type quelconque et ´ecrit le r´esultat sur la sortie standard.
Par d´efaut, cmp est silencieux si les fichiers sont identiques. S’ils diff`erent, les num´eros d’octet et de ligne de la premi`ere diff´erence d´etect´ee sont rapport´es.
$ cd /boot
$ cmp System.map-2.4.24 System.map-2.4.24.old System.map-2.4.24 System.map-2.4.24.old differ: \
byte 145321, line 5064
Diff´erences entre fichiers
Deux commandes importantes:
• diff: imprime les diff´erences entre fichiers texte;
• patch: met `a jour un fichier `a partir de ses diff´erences avec un autre.
Si diff effectue une sorte de soustraction entre deux fichiers, patch effectue une sorte d’addition.
Usage de diff
Options de diff
Options principales:
diff [options] from-file to-file • -b ignore les changements concernant seulement les espaces
$ cat f1
• -i ignore les changements concernant seulement la casse une seule ligne
$ cat f2 • -c donne des lignes de contexte une seule ligne • -e produit un r´esultat utilisable par l’´editeur ed et ici une deuxieme.
$ diff f1 f2 Diff admet aussi des r´epertoires en argument: 1a2 • alors le contenu des r´epertoires est compar´e
> et ici une deuxieme.
• l’option -r va traiter r´ecursivement ces r´epertoires.
Context diff Usage de patch
$ diff -c f1 f2 En g´en´eral:
*** f1 2003-10-23 22:06:16.000000000 +0200
— f2 2003-10-23 22:06:38.000000000 +0200 patch [-p n] < patchfile ***************
*** 1 **** car les noms de fichiers `a traiter sont dans patchfile. — 1,2 —- Options (linux):
une seule ligne  + et ici une deuxieme. • -pn efface des chemins d’acc`es aux fichiers le plus petit
$ diff -c f1 f2 > delta
$ patch <delta segment initial contenant n caract`eres “/” patching file f1 • -R “renverse” le patch.
$ diff f1 f2
Fonctionnement de patch
Plus pr´ecis´ement, comment ¸ca marche:
• si le patch est (partiellement) applicable au fichier, la version originale est sauvegard´ee dans fichier.orig
• les patches rejet´es sont sauv´es dans fichier.rej
• si on se trompe de sens, patch propose de ¿renverserÀ le patch
• patch a un peu d’intelligence: la commande essaie d’appliquer le patch `a quelques lignes pr`es.
Disques, partitions, fichiers, . . .
Types de fichiers
• Fichiers ¿normauxÀ: suite d’octets d’une certaine longueur (taille du fichier).
• Liens symboliques (voir ci-apr`es).
• R´epertoire: table associant des inodes (adresses) `a des noms.
• Fichiers sp´eciaux: des pilotes (drivers) vus comme des fichiers. Ils r´epondent aux appels open, close, read, write et ioctl (contrˆole).
Fichiers sp´eciaux
Deux types de fichiers sp´eciaux:
• block devices: associ´es `a des disques, lecteurs de bandes, etc. Entr´ees-sorties ¿bufferis´eesÀ.
• character devices: associ´es `a des terminaux, souris et autres p´eriph´eriques (re´els ou virtuels).
Ces devices sont visibles depuis le syst`eme de fichiers, et sont g´en´eralement situ´es dans /dev.
Partitions
Un disque est partag´e en partitions (disques logiques, volumes) contenant chacune un syst`eme de fichiers (filesystem), sauf pour les partitions de swap destin´ees `a fournir la m´emoire virtuelle.
Une partition peut ˆetre
• locale, cad ˆetre physiquement situ´ee sur un support m´emoire (disque) connect´ `a l’ordinateur)
• distante, acc´ed´ee au travers du r´eseau (elle peut alors ne pas correspondre exactement `a une vraie partition de son support physique). Habituellement via NFS (Network File System).
Les partitions locales sont vues comme des devices /dev/…
¿MonterÀ une partition, c’est ¿accrocherÀ son syst`eme de fichiers dans l’arborescence courante.
$ mount
/dev/hda6 on / type ext2 (rw)
/dev/hda8 on /home type ext2 (rw)
/dev/hda5 on /mnt/windowsXP type vfat (rw)
Les r´epertoires /, /home, . . . , sont appel´es ¿points de montageÀ.
Les ¿volumesÀ mont´es peuvent contenir des syst`emes de fichiers diff´erents. Ils pr´esentent tous une interface commune (ouvrir, lire, ´ecrire).
Informations relatives aux fichiers
Informations produites par ls -l:
-rw-rw-r– 1 tom users 5945 Dec 1 17:59 unix2.txt
type de fichier d, b, c, –  droits rwx, s, t  nombre de liens physiques ici, 1
propri´etaire tom
groupe users  taille nombre d’octets, 5945  date de derni`ere modification Dec 1 17:59
nom unix2.txt
Commandes modifiant le statut des fichiers:
• touch: met `a jour la date de derni`ere modification. Cr´ee le fichier s’il n’existe pas.
• chown: change le propri´etaire
• chgrp: change le groupe
Plus d’informations sur les fichiers
Adresse des fichiers
ls -i: affiche le num´ero d’inode des fichiers (l’inode est le num´ero associ´e `a un fichier: son adresse dans la partition, en quelque sorte).
$ ls -il unix2.txt
96109 -rw-rw-r– 1 tom users 5945 Dec 1 17:59 unix2.txt
Modifications de l’ordre de listage des fichiers (alphab´etique sur le nom par d´efaut):
• -t: par date de derni`ere modification
• -c: par date de derni`ere modification du statut (touch, chown, . . . )
• -S: par taille
• -u: par date de dernier acces
• -r: dans l’ordre inverse de l’ordre specifié
Liens physiques
Lien physique: deux noms diff´erents pour un mˆeme fichier (inode)
$ ls -il unix2.txt 96109 -rw-rw-r– 1 tom users 5945 Dec 1 17:59 unix2.txt $ ln unix2.txt autre_nom
$ ls -l unix2.txt autre_nom -rw-rw-r– 2 tom users 5945 Dec 1 17:59 autre_nom -rw-rw-r– 2 tom users 5945 Dec 1 17:59 unix2.txt $ ls -il unix2.txt autre_nom
96109 -rw-rw-r– 2 tom users 5945 Dec 1 17:59 autre_nom
96109 -rw-rw-r– 2 tom users 5945 Dec 1 17:59 unix2.txt
Liens physiques
Partage d’inode ⇒
• on ne peut ´etablir de lien physique entre diff´erentes partitions;
• on ne peut ´etablir de lien physique entre r´epertoires (un syst`eme de fichiers est un graphe acyclique dont seules les ¿feuillesÀ peuvent ˆetre partag´ees).
NB: les ¿pointeurs arri`ereÀ “.” et “..” ne sont pas compt´es ici comme cr´eant des cycles: ils servent essentiellement `a remonter dans l’arborescence.
Liens symboliques
Liens symboliques: fichier sp´ecial contenant le chemin d’acc`es `a un autre fichier (correspond aux ¿raccourcisÀ de Windows).
$ ln -s unix2.txt lien_symb
$ ls -il unix2.txt liens_symb
96110 lrwxrwxrwx 1 tom users 9 \
Dec 1 18:57 lien_symb -> unix2.txt
96109 -rw-rw-r– 1 tom users 5945 Dec 1 17:59 unix2.txt
(Parenthese: installation de Linux)
Une recette Ingr´edients: pr´eparer
• un PC avec ou sans MS-Windows install´e
• un outil de manipulation de partitions (si MS-W pr´einstall´e)
• un CD ou DVD Linux
Pour installer Linux,
1. si n´ecessaire, d´egager de l’espace libre sur le disque du PC
2. ins´erer le CD/DVD
3. d´emarrer la machine et suivre les instructions.
Retirer du feu, et servir. A consommer sans mod´eration.

1. Recherches de et dans des fichiers
2. Comparer des fichiers: cmp, diff, patch
3. Disques, partitions, fichiers, . . .
4. (Parenthese: installer Linux sur un PC)
5. Processus

……..

Cours gratuitTélécharger le cours complet

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *