septembre 27, 2018

Découvrir Linux #5: Bien comprendre l'arborescence

Les fichiers, c'est un sacré morceau ! Je vais aujourd'hui introduire le répertoire courant, ou répertoire de travail, la commande cd et quelques manipulations sur les fichiers. Mais il y a de quoi remplir un second épisode sur le sujet !

Découvrir Linux #5: Bien comprendre l'arborescence

La vidéo est disponible ici ou sur la chaîne Youtube https://www.youtube.com/user/yrougy


Version texte:

Bonjour les geeks. Aujourd’hui c’est le cinquième épisode de découvrir GNU/Linux. Et c’est la suite directe de l’épisode 4 qui était déjà un peu long. Si vous ne l’avez pas vu, je vous invite à le regarder, je vais le mettre en fiche ici, et en lien dans la description.

GENERIQUE

La dernière fois, on a commencé à l’intéresser aux répertoires, et aux fichiers. Je vais en rajouter une couche aujourd’hui.

Tout d’abord, je vais revenir sur les noms des fichiers ou des répertoires. Bon allez, je vais d’ailleurs dire fichier de façon générale. Ça englobe tous les types de fichiers: les répertoires, les fichiers classiques qu’on appelle fichiers réguliers, les liens symboliques, etc.

Donc, comment on nomme un fichier ?

— Hein ? Ben, par son nom. Enfin je comprends pas trop ta question !

Oui, faut peut être que je précise. Effectivement, on le nomme par son nom, mais il y a deux manière de donner le nom d’un fichier.

— Ah, je sais ! Y’a la première et la seconde !!

Ah t’es un malin toi !

Mais plus sérieusement, il y a vraiment deux manières de nommer un fichier. Regarde, ici il y a un seul fichier dans ce répertoire:

(toto.txt dans le répertoire /home/pi/exemple )

Comment on peut le nommer ?

— Je vois toto.txt mais je vois pas l’autre manière de le nommer

C’est bien une première manière de le nommer, mais j’ai peut être un soucis avec ça. Si il y a un fichier toto.txt dans ce répertoire là, celui que je viens de te montrer, et qu’il y a aussi un fichier toto.txt dans le répertoire /tmp, on va avoir une ambiguïté si on dit « le fichier toto.txt » !

— Ah ben oui, si je te dis le fichier toto.txt, ça va dépendre de où tu es, attends, comment tu disais déjà ?

Le répertoire courant !

— Ah oui c’est ça, ça va dépendre de ton répertoire courant.

Exactement. Et si tu donnes le nom toto.txt, c’est justement le nom relatif du fichier. Plus précisément c’est le nom relatif au répertoire courant ! Tout simplement car ça dépend du répertoire dans lequel on se trouve !

— Ok. Jusque là je te suis. Mais j’attends la suite…

La suite ?

— Oui, la seconde manière de nommer un fichier !

Ah. Ben c’est simple c’est quand tu donnes en même temps le chemin qui permet d’accéder au fichier, en partant de la racine de l’arborescence. Du point de départ.

— Ouais. Je vois ce que tu veux dire, mais c’est quand même pas très clair !

T’inquiète j’allais te donner un exemple. Donc le fichier dont on parlait tout à l’heure son nom c’est

— ben attends, y’en a deux !

Justement, attends ! Donc le fichier dont on parlait tout à l’heure c’est /home/yves/exemple/toto.txt

— Ah mais celui là y’en a qu’un en effet !

Y’a pas d’ambiguïté là. C’est pour ça qu’on dit que c’est le nom absolu du fichier.

— Absolu, carrément !

Je sais, le nom est pas très très bien choisi je trouve, ça n’a rien d’absolu, mais au moins c’est sans ambiguïté.

— Mais comment on fait pour savoir si on a un nom absolu ou un nom relatif ?

C’est directement indiqué par le nom ! Regarde, dans le nom relatif, on a directement le nom du fichier, on ne part pas de la racine de l’arborescence. Par exemple toto.txt, ou exemple/toto.txt. Tous les deux dépendent du répertoire courant.

Par contre, quand le premier caractère dans le nom c’est un /, ça veut dire que c’est le nom absolu comme /home/pi/exemple/toto.txt ou /tmp/toto.txt.

— On voit bien que c’est pas les mêmes de fichiers, du coup !

Effectivement. D’où le sans ambiguïté.

Donc si je récapitule, quand on parle d’un fichier, et que on ne fait pas commencer le nom par un /, le nom qu’on donne est relatif au répertoire courant, au répertoire dans lequel on se trouve.

Par contre, si le nom du fichier commence par /, ça veut dire qu’on donne l’emplacement du fichier en même temps, le répertoire dans le quel il se trouve, depuis la racine de l’arborescence. C’est le nom absolu, et ça ne dépend absolument pas du répertoire courant, l’endroit où on se trouve… Et c’est valable chaque fois qu’on écrit le nom d’un fichier !

—Transition—

Au fait, j’ai une question pour toi, à propos d’une commande qu’on n’a pas vue la dernière fois… Est-ce que tu connais la commande qui va renommer un fichier ?

— Heu, pour l’instant le nom des commandes est assez explicite alors c’est peut être rename ? Ah non attends, c’est trop long ça ! Ça doit être rn pour rename non ?

Ah bien tenté. Mais en fait y’avait un piège !

— Ha ben c’est malin, comment je pouvais le savoir ?

Tu pouvais pas ! C’est ça qui est marrant !

En fait, comme on vient de parler des chemins absolus et relatifs on peut dire que

— Attends tends tends, chemin ?

Ah pardon, oui chemins. En fait c’est comme le nom des fichiers, chemin en quelquesorte ça donne le répertoire du fichier, soit de façon relative, soit de façon absolue, comme les noms relatifs et absolus des fichiers. En fait, tu trouveras les deux dans la littérature, et chemin est très utilisé. Des fois il est même utilisé à la place de « nom » de fichier, on dit « chemin de fichier » mais c’est pas systématique.

— Ok, ça me va. Donc tu disais ?

Alors, si je reprends, oui je disais que quand tu veux renommer un fichier, en tu vas le déplacer dans un autre fichier d’un nom différent !

— Attends, faut que j’y réfléchisse…

Prends ton temps, mais c’est bien ça !

— Donc, sous Unix, renommer et déplacer c’est pareil ?

Dans ce cas oui. Et la commande qui permet de renommer ou de déplacer un fichier, c’est la commande mv, comme…

— Heuuu, move ?

Oui move, qui veut dire bouger, déplacer en anglais !

Et son utilisation se fait de la même manière que celle de la commande cp de l’épisode précédent. On passe au moins deux paramètres, le second peut être un répertoire pour déplacer le premier dans le répertoire, et si on passe pleins de paramètres, comme pour cp, ça déplace tous les fichiers dans le répertoire dont le nom est en dernier. Je te laisse retourner voir l’épisode précédent pour ça.

— Ah ouais t’es comme ça, t’en dis pas plus !

Bah non, en fait ça sert pas à grand chose, car si tu veux le mémoriser y’a qu’une manière de le faire, c’est d’essayer, et ça, je peux pas le faire pour toi !

— Je vois… Tu te fatigues pas quoi !

En fait, si, c’est parce que je voudrais aborder un dernier point dans cet épisode.

— Le point… final ?

Bref, non, je voudrais juste parler de quelques uns des répertoires qu’on voit dans la racine, tu sais ceux qui sont dans /. Il y en a pas mal, mais on retrouve quasiment toujours la même chose, et c’est pas pour rien. Je vais les donner par ordre alphabétiques comme quand on fait ls /

Tout d’abord il y a bin. Ce nom est l’abréviation de binaries, binaires en français, car là dedans se trouvent les fichiers qui correspondent aux commandes essentielles du système. Je crois que j’en ai déjà parlé, mais en général quand on tape une commande, ça correspond à un fichier qu’on va exécuter. Ben dans bin ce sont les commandes essentielles au fonctionnement du système. Il y a le Shell, mais aussi ls, cp, mv, etc etc.

Ensuite, on a boot. Bon, boot, c’est pour bootstrap pour démarrer l’ordinateur. Les fichiers qu’on trouve là dedans ont permis à l’ordinateur de démarrer, mais ils ne sont plus utiles pour le moment. Il sont utilisés uniquement pendant la phase de démarrage.

— Ben pourquoi on les met alors ?

C’est pour pouvoir les mettre à jour si il y a besoin. On a le noyau là dedans par exemple.

Ensuite j’ai dev. Dev est là pour Devices qui veut dire…

— Périphériques non ?

Oui ça veut dire périphériques. Et c’est qu’on va trouver les fichiers qui permettent de représenter les périphériques de la machine. D’ailleurs quand on redémarre, son contenu est presque vide, et il est rempli en fonction de ce qui est détecté.

Le répertoire qui suit, c’est etc

— Pour etcétéras non ?

Alors bien tenté, mais en fait non ! Enfin, je pense que à l’origine oui, mais ils ont trouvé une signification. E T C c’est pour Editable Text Configuration, donc en gros les fichiers texte éditables de configuration. C’est là où se trouvent tous les fichiers qui servent à configurer le système: la liste des utilisateurs locaux, la configuration du serveur web, la configuration du démarrage, des programmes serveurs etc

— Ah ben si c’est etc !

….

Après tu as le répertoire home

— Ah celui là c’est mon répertoire domicile !

Ah justement, non ! C’est une erreur courante, /home n’est pas le répertoire domicile. C’est le répertoire qui contient les répertoires domiciles…

— Heu là ? Je comprends pas.

Oui la phrase est compliquée, mais en fait, si tu es l’utilisateur yves, en général ton répertoire domicile sera /home/yves, si tu es l’utilisateur pi, ton répertoire domicile sera /home/pi. /home c’est le répertoire dans lequel on aura les répertoires domiciles des utilisateurs locaux

— Oui c’est plus clair avec un exemple !

Allez, je continue avec lib et parfois lib64. Lib est là pour Library qui veut dire

— Librairie !

Heu, non, c’est un faux ami, ça veut dire bibliothèque. Et dans ces répertoires, on a des bibliothèques partagées essentielles au fonctionnement du système, un peu comme les DLL essentielles de Windows.

— Comme les ? Oh la vache, j’ai rien compris là !

OK, alors en fait quand un programme va fonctionner, il aura besoin d’utiliser des routines, des opérations qui sont décrites dans d’autres fichiers qui sont mis à disposition de n’importe quel programme. Par exemple si mon programme a besoin de vérifier le mot de passe d’un utilisateur, le programme va utiliser une bibliothèque qui s’occupe de ça. Il ne le fait pas lui même. Et bien ces bibliothèques de routines, d’opérations sont dans des fichiers bibliothèques. Et ceux qui sont dans /lib ou /lib64 correspondent aux bibliothèques essentielles au fonctionnement de la machine !

— Han ok? Mais pourquoi 64 ? Et pas 42 par exemple ?

Alors c’est parce que quand on est sur un PC, on a un microprocesseur qui peut faire fonctionner des programmes en 32 bits ou en 64 bits. Un fichier programme en 32 bits ne peut utiliser que des bibliothèque 32 bits et un fichier programme 64 bits que des bibliothèques en 64 bits. Il faut donc les deux sur les PC.

— Ah oui sinon les programmes peuvent pas fonctionner

Exactement, c’est essentiel.

Pour le répertoire suivant, je saute directement à opt qui est optionnel. C’est une arborescence optionnelle qui ne vient pas perturber l’arborescence normale. Mais je pense qu’on en reparlera.

Ensuite on a proc, qui est un peu particulier. Proc veut dire processus. Et tous les fichiers qui sont dans /proc, hé ben… ils n’existent pas !

— Heu quoi ?

Non, en fait, ce ne sont pas des fichiers sur le disque. C’est juste le coeur du système, le noyau, qui me présente sous forme de fichiers, des informations. Et quand je regarde ce qu’il y a dans ce fichier, c’est à ce moment que le noyau crée le contenu. C’est totalement dynamique.

— Mais… pourquoi processus alors ?

Parce que dans ce répertoire, tu as pleins de répertoires dont les noms sont des numéros, tu vois ça ? Chacun de ces numéros correspond à un processus en cours de fonctionnement

— Ah du coup on peut aller voir dedans

Oui, mais bon, c’est pas très digeste. Tu te souviens de la commande ps qui affichait des processus ?

— Heu, oui …

Alors la commande ps, pour trouver les processus et écrire les informations sur ses processus, elle regarde dans /proc.

— Ah oui, c ‘est malin ça !

Oui, et je te rassure, on ne va que rarement regarder les processus directement dans /proc, on utilise plutôt ps.

— Je vois. Et après on a quoi ?

Ah, après on root. C’est juste le répertoire domicile de l’administrateur

— Ah, il est pas dans /home lui ?

Non, c’est une exception, et on le met directement dans /root. C’est beaucoup plus pratique quand la machine ne démarre pas bien

— Pour ça je te crois sur parole…

Oui car je ne vais pas entrer dans les détails là dessus.

Après je vais parler de sbin. En fait, c’est comme bin, mais le s devant veut dire system. Donc c’est les fichiers des commandes systèmes essentielles au fonctionnement de la machine

— Commande système ? C’est quoi la différence avec une commande pas système ?

Techniquement pas grand chose. Mais en gros, c’est des commandes qui servent plus à l’administrateur, à root, qu’à un utilisateur quelconque. D’ailleurs la plupart de ces commandes ne fonctionnent que si tu es root. On les met juste à part.

Je passe sur sys, qui est en quelque sorte une version améliorée de proc, mais ça pourrait faire l’objet d’une vidéo à part entière.

Maintenant on a tmp, pour temporary ou temporaire en français. Du coup, c’est un espace temporaire dans lequel on peut écrire. Mais attention ! Temporaire ça veut dire que c’est pas permanent. Sur plein de système ça disparait avec un redémarrage, sur d’autres c’est régulièrement effacé. Donc c’est vraiment pour un usage temporaire ponctuel. On ne stocke pas de données dans tmp surtout ! C’est important car c’est une bonne façon de perdre des données ça !

Ensuite on a usr, qui veut dire Unix System Resources, ou Ressources du système Unix. C’est là où on va avoir les programmes non essentiels au système comme firefox, comme le serveur web, là aussi où on aura le manuel Unix, les bibliothèques non essentielles, tout ça quoi. En fait c’est une partie de l’arborescence qui permet d’avoir la plupart des programmes qu’on utilise au quotidien. Son contenu n’évolue que rarement, quand on fait une mise à jour.

Et enfin, on a var, qui lui contient tout ce qui va varier pendant le fonctionnement de la machine. C’est là où on aura les répertoires qui sont utilisés comme espaces de travail des programmes des bases de données, des journaux système, du serveur web. En fait, toutes les données qui changent souvent.

— Ouf, ça en fait un paquet !

Oui je sais, c’est un peu rébarbatif, mais je crois que c’est intéressant qu’on les présente rapidement. Et ceux que j’ai pas mentionnés correspondent à des répertoires qu’on verra prochainement.

— Oui car ça commence à faire pas mal pour aujourd’hui !

En effet, ça fait pas mal. J’espère que vous avez apprécié cette vidéo, et si c’est le ças, vous connaissez la musique, le pouce bleu, l’abonnement et tout ça. Vous pouvez aussi partager cette série de vidéo avec tous ceux qui apprennent Linux, ça peut les aider, enfin j’espère

Quant à moi, je vous dis à la semaine prochaine, si tout va bien !

Ciao les geeks