Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT →
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
utilisateurs:enicar:tutos:peregrination-autour-de-ls-l [22/03/2015 09:47] enicar [Liens et inodes] |
utilisateurs:enicar:tutos:peregrination-autour-de-ls-l [15/11/2019 21:49] enicar supprimée |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== Pérégrination autour de ls -l ====== | ||
- | * Objet : Aborder les droits unix et types de fichiers à travers la sortie de ls | ||
- | * Niveau requis : {{tag>débutant avisé}} | ||
- | * Commentaires : Cet article n'a qu'un seul but, apprendre | ||
- | * Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-) | ||
- | * [[doc:systeme:ls|commande ls]] | ||
- | * [[doc:systeme:ln|commande ln]] | ||
- | * [[doc:systeme:droits-unix|droit unix]] | ||
- | * [[doc:systeme:chmod|commande chmod]] | ||
- | * [[doc:systeme:chown|commande chown]] | ||
- | * [[doc:systeme:touch|commande touch]] | ||
- | ===== Introduction ===== | ||
- | Je propose d'aborder les concepts de droits unix et de type de fichier en prenant exemple | ||
- | sur la sortie de la commande : | ||
- | <code user> | ||
- | ls -l | ||
- | </code> | ||
- | Ceci permettra d'aborder les droits sur les fichiers, les notions de propriétaires et de groupe et | ||
- | les divers types de fichiers qui existent sur un système de fichiers linux (ext2/ext3/ext4). | ||
- | La plupart de ces notions sont aussi vraies pour d'autres systèmes de fichiers unix, bien sûr ;) | ||
- | |||
- | Donc je vais d'abord exposer ces notions essentielles, et ensuite on va revenir sur des exemples | ||
- | pour entériner tout cela. | ||
===== La sortie de ls -l ===== | ===== La sortie de ls -l ===== | ||
Faisons : | Faisons : | ||
Ligne 66: | Ligne 43: | ||
|-|Fichier normal| | |-|Fichier normal| | ||
|d|Répertoire (**d**irectory) ([[peregrination-autour-de-ls-l?&#les-repertoires|Les répertoires]])| | |d|Répertoire (**d**irectory) ([[peregrination-autour-de-ls-l?&#les-repertoires|Les répertoires]])| | ||
- | |l|Lien symbolique (symbolic **l**ink)| | + | |l|Lien symbolique (symbolic **l**ink) ([[peregrination-autour-de-ls-l?&#les-liens-symboliques|Les liens symboliques)]]| |
|p|Tube nommé (**p**ipe)| | |p|Tube nommé (**p**ipe)| | ||
|s|**S**ocket unix| | |s|**S**ocket unix| | ||
Ligne 124: | Ligne 101: | ||
Dans linux, ce bit **t** n'est utilisé que pour les répertoires. Il est utilisé notamment pour | Dans linux, ce bit **t** n'est utilisé que pour les répertoires. Il est utilisé notamment pour | ||
- | les répertoires temporaires, par exemple : | + | les répertoires temporaires, par exemple ((L'option **-d** demande à **ls** de ne pas afficher le contenu des répertoires, mais de lister leur nom comme avec les autres fichiers))((Nous pouvons grouper les options courtes dans ls. Ainsi **ls -ld** est équivalent à **ls -l -d**)) : |
<code user> | <code user> | ||
ls -ld /tmp | ls -ld /tmp | ||
Ligne 347: | Ligne 324: | ||
===== Les répertoires ===== | ===== Les répertoires ===== | ||
- | FIXME À SUIVRE... | + | Les répertoires sont des fichiers avec l'attribut « répertoire » ((Presque tout est fichier dans un |
+ | système linux. Il existe une exception notable : les interfaces réseaux. En effet ces interfaces | ||
+ | n'ont aucun périphérique correspondant dans /dev/)) | ||
+ | |||
+ | Les répertoires permettent de faire la correspondance entre les noms des fichiers et les inodes. | ||
+ | Les répertoires ont eux mêmes un nom dans un répertoire, à l'exception du répertoire racine | ||
+ | qui n'a pas de nom. | ||
+ | |||
+ | Nous allons voir que les répertoires sont aussi des liens sur des inodes, et qu'un répertoire | ||
+ | possède d'office plusieurs liens physiques (à par la racine, mais ça ne dure pas longtemps ;-)). | ||
+ | Donc, voyons le nombre de liens d'un répertoire. Pour cela nous allons utiliser, l'option | ||
+ | **-d** de **ls**, par exemple : | ||
+ | <code user> | ||
+ | ls -ld . | ||
+ | </code> | ||
+ | Cela donne dans mon home : | ||
+ | <file -> | ||
+ | drwxr-xr-x 246 enicar enicar 36864 mars 26 06:42 . | ||
+ | </file> | ||
+ | Nous voyons que le répertoire courant a bien l'attribut répertoire (ouf !). Le nombre de | ||
+ | liens est 246, et sa taille 36864 octets. | ||
+ | |||
+ | |||
+ | Le nombre de liens d'un répertoire est au moins deux ((sauf pour la racine, mais je n'y reviendrai plus ;) )). En effet, le premier lien est celui du répertoire parent. Le second est celui qu'il a sur lui | ||
+ | même, c'est le point. Alors nous en arrivons à la question : d'où vient ce 246 ? À chaque nouveau | ||
+ | sous-répertoire créé dans un répertoire est associé un lien noté **..**. Ce lien pointe sur le répertoire parent. Donc on en déduit, qu'il y a 244 sous-répertoires dans le répertoire courant de mon exemple. | ||
+ | Prouvons le ! Je vais utiliser pour ce faire les commandes **find** et **wc**. | ||
+ | <code user> | ||
+ | find . -maxdepth 1 -type d |wc -l | ||
+ | </code> | ||
+ | **find** permet de chercher des fichiers selon divers critères. Ici, je vais lui demander de trouver les répertoires du répertoire courant (**-type d**) et de ne pas parcourir ces sous-répertoires en profondeur | ||
+ | comme il le fait normalement (**-maxdepth 1**). **wc** compte les caractères, les mots et les lignes. | ||
+ | Ici, je lui demande de compter les lignes uniquement (**-l**). En effet, par défaut, **find** affiche un fichier par ligne. Mais surprise ! Cela affiche : | ||
+ | <file -> | ||
+ | 245 | ||
+ | </file> | ||
+ | Me serais-je fourvoyer ? Non, pas du tout ! En fait, avec **find** nous avons aussi compté le répertoire | ||
+ | courant (c'est à dire **.**). Vous pouvez le vérifier en faisant : | ||
+ | <code user> | ||
+ | find . -maxdepth 1 -type d |less | ||
+ | </code> | ||
+ | Le répertoire **.** devrait être listé au début. Une autre façon de voir, est que **find** liste tous les répertoires du répertoires courant sauf **..**, ça nous fait 246-1. ;-) Le compte est bon ! | ||
+ | |||
+ | ===== Les liens symboliques ===== | ||
+ | FIXME à suivre. |