Un fichier normal contient des données, ce fichier peut être lisible, c'est à dire contenir des informations compréhensibles écrites en claire, ce fichier peut être aussi totalement illisible. Concrètement un fichier texte qui comme son nom l'indique contient du texte est lisible, alors qu'un exécutable ne l'est pas, si vous cherchez à l'éditer vous ne verrez rien de compréhensible, dans ce dernier cas, on dit aussi qu'on a affaire à un fichier binaire.
Un répertoire peut être considéré comme un classeur, dans lequel on met des fichiers, c'est un élément d'organisation de l'espace du disque dur. Les fichiers ayant les mêmes " affinités " peuvent ranger sous un même répertoire, de même on peut trouver des sous répertoires dans un répertoire, qui eux mêmes contiennent des fichiers et d'autres sous répertoires. Ce système hiérarchique fait penser à un arbre, d'où le terme d'arborescence.
|--------- lib ----- X11 | | | |------- X11R5 |-------------usr | | | | | |------------src --- samba | | | |----- Xaw |-------| /-| |-------| | | | | |----------olivier----linux | | | | | |-------temp |-------------home | | |----------marcel---- mail | |------- docIl existe un " ancêtre " à tous les répertoires, c'est la racine ou le / (slash) sur le shéma. Tout répertoire, qui n'est pas la racine elle même, possède un répertoire qui le contient (appelé répertoire père) et peut posséder des sous-répertoires (répertoires fils) et des fichiers .
Quand on crée un répertoire, le système crée automatiquement deux " fichiers " sous le répertoire, le premier est un " . ", qui représente le répertoire lui-même, le deuxième est un " .. " qui représente le répertoire père.
Le troisième type de fichier est le fichier dit spécial, qu'on a abordé brièvement auparavant, rappelons que l'on doit passer par eux si on veut dialoguer avec un périphérique matériel.
|--------- lib ----- X11 | | | |------- X11R5 |-------------usr | | | | | |------------src --- samba | | | |----- Xaw |-------| /-| |-------| | | | | |----------olivier----linux----HOW-TOppp | | | | | | | | |-------temp |-------------home | | |----------marcel---- mail | |------- docPour indiquer le chemin du fichier (HOW-TOppp dans notre exemple), on part de la racine (/), on indique le premier répertoire traversé, puis les autres, en séparant chacun des répertoires d'un /. Ainsi donc pour notre fichier le chemin d'accès est :
/home/olivier/linuxEn indiquant /home/olivier/linux/HOW-TOppp le fichier est parfaitement identifié, en effet on sait où le trouver puisqu'on a son chemin, et le nom du fichier HOW-TOppp.
A noter qu'on peut avoir des fichiers portant le même nom dans le système de fichiers dés lors qu'ils n'ont pas le même chemin, et donc qu'ils ne se trouvent pas au même endroit.
On dit que le chemin du fichier est absolu parce qu'à la vue de son chemin d'accès, en partant de la racine, on sait exactement où se trouve le fichier.
Un chemin est dit relatif, quand il n'est pas nécessaire, d'indiquer le chemin complet, de l'endroit où on se trouve dans l'arborescence il suffit de rajouter le chemin par rapport à ce même endroit.
En admettant qu'on se trouve sous /home/olivier, si l'on veut accéder à notre fichier HOW-TOppp, le chemin relatif au répertoire courant est ./linux, le point représentant le répertoire courant comme on l'a vu auparavant. Ce qui donne en chemin absolu /home/olivier/linux.
cd /home/olivier/linuxOn a tapé un chemin absolu, on se trouve maintenant sous /home/olivier/linux, si l'on veut aller sous /home/olivier, on doit taper :
cd ..En effet .. représente le répertoire père, /home/olivier étant le répertoire père de /home/oliver/linux, en tapant cette commande, on se retrouve à l'endroit désiré.
Si vous voulez connaître ou vous vous trouvez, vous disposez de la commande pwd, ainsi si vous tapez pwd juste après la séquence de commandes précédentes, vous obtenez :
/home/olivier
|--------- lib ----- X11 | | | |------- X11R5 |-------------usr | | | | | |------------src --- samba | | | |----- Xaw |-------| /-| |-------| | | | | |----------olivier----linux----HOW-TOppp | | | |-----Readme | | | | | |-------temp |-------------home | | |----------marcel---- mail | |------- docSi vous allez sous /home/olivier/linux (commande cd /home/olivier/linux), si vous voulez visualiser les fichiers contenus, vous tapez ls, vous obtenez :
HOW-TOppp ReadmeLa commande ls peut être utilisée avec des options, si précédemment vous aviez tapez ls -l, vous auriez obtenu:
-rw-rw-rw- 1 olivier users 17356 Dec 3 12:11 HOW-TOppp -rw-r--r-- 1 olivier users 7432 Nov 21 02:21 ReadmeLa signification des champs est la suivante:
ls -l nom-du-fichierA noter que sur beaucoup de système la commande ll est équivalent à ls -l.
mkdir nom-de-répertoire Création d'un répertoire
rmdir nom-de-répertoire Suppression d'un répertoire vide
mv répertoire répertoire-d'accueil déplacement d'un répertoire
mv répertoire nouveau-nom Changement de nom d'un répertoire
touch mon-fichier création d'un fichier vide,
more mon-fichier visualisation d'un fichier page à page,
rm mon-fichier suppression d'un fichier,
mv mon-fichier répertoire d'accueil déplacement d'un fichier,
mv mon-fichier nouveau-nom changement de nom d'un fichier,
cp nom-fichier répertoire-d'accueil/autre-nom copie de fichier,
file mon-fichier pour savoir si on a un fichier binaire (exécutable) ou un fichier texte. On obtient pour un fichier texte, comme sortie mon-fichier : ascii text.
lrwxrwxrwx 1 root root 14 Aug 1 01:58 Mail -> ../../bin/mail*Ca signifie que le fichier Mail pointe vers le fichier mail qui se trouve dans le répertoire /bin, en d'autres termes Mail est un lien vers le fichier mail.
Un lien est créé pour pouvoir accèder au même fichier à différents endroits de l'arborescence. Sous Windows on retrouve à peu près l'équivalent avec la notion de raccourci.
La commande ln (pour link) sert à créer des liens. Par exemple:
ln -s /home/olivier/linux/readme /tmp/lisezmoiLe fichier source est readme sous /home/olivier/linux, le lien créé est lisezmoi sous /tmp. En faisant un man ln, vous découvrirez qu'il existe des liens hards et softs, sans rentrer dans les détails, je vous conseille dans un premier temps de vous limiter aux liens softs (option -s) car les liens hards ne permettents pas de visualiser directement le lien (la petite flèche -> quand on tape ls -l).
La différence entre un lien hard et symbolique se trouve au niveau de l'inode, un lien hard n'a pas d'inode propre, il a l'inode du fichier vers lequel il pointe. Par contre un lien symbolique possède sa propre inode. A noter que vous ne pouvez pas créer de liens hards entre deux partitions de disque différente, vous n'avez pas cette contrainte avec les liens symboliques.
Pour connaître le numéro d'inode d'un fichier, vous pouvez taper:
ls -i mon-fichier
Le métacaractère le plus fréquemment utilisé est *, il remplace une chaîne de longueur non définie. Avec le critère *, vous sélectionnez tous les fichiers. Par le critère a*, vous sélectionnez tous les fichiers commençant par a.
ls a*Va lister que les fichiers commençant par a. De même *a opère une sélection des noms de fichiers se terminant par a. Le critère *a* va faire une sélection sur les noms de fichiers qui ont le caractère a dans leur nom, quelque soit sa place.
Le métacaractère ? remplace un caractère unique. Avec le critère a??, vous sélectionnez les fichiers dont le nom commence par a, mais qui contiennent au total trois caractères, exactement.
Les métacaractères [ ] représente une série de caractères. Le critère [aA]* permet la sélection des fichiers dont le nom commence par un a ou A (minuscule ou majuscule). Le critère [a-d]* fait la sélection des fichiers dont le nom commence par a jusqu'à d. Le critère *[de] fait la sélection des fichiers dont le nom se termine par d ou e.
Vous voyez donc que les caractères [],* et ? sont des caractères spéciaux, qu'on ne peut utiliser comme des simples caractères, parce qu'ils sont interprétés par le shell, comme des métacaractères. Vous pouvez cependant inhiber leur fonctionnement. En tapant :
ls mon-fichier?Le shell va interpréter le ? comme un métacaractère et afficher tous les fichiers qui commencent par mon-fichier et qui se termine par un caractère unique quelconque. Si vous ne voulez pas que le ? soit interprété vous devez taper.
ls mon-fichier\ ?