Récemment, je tombe sur une commande linux pendant que je me connecte au site de mon client pour récupérer le fichier journal des activités, et étudie également certains des types de fichiers linux, et une commande simple pour savoir quels sont les types de fichiers au système d’exploitation Linux.
Linux utilise quatre types de fichiers de base :
- fichiers ordinaires
- répertoires
- liens symboliques
- fichiers de blocs et de périphériques de caractères
Vous déterminez le type d’un fichier en émettant la commande ls -l et en lisant le premier caractère de chaque ligne de la sortie.
La sortie typique de la commande ls est la suivante:
$ ls -l
total 8
-rw-r-r- 1 root root 22 Oct 6 15 :33 anormalfile
brw-rw– 2 root disk 41, 0 May 5 1998 blockdev
crw-rw-rw- 2 root root 5, 0 May 5 1998 characterdev
drwxr-xr-x 2 root 4096 Oct 6 15 :33 subdir
lrwxrwxrwx 1 root root 11 Oct 6 15:35 symbolique -> anormalfile
Les fichiers ordinaires commencent par un tiret (-), les répertoires commencent par d, les liens symboliques commencent par le caractère l, les périphériques de bloc sont précédés du caractère b et les périphériques de caractère commencent par la lettre c.
Fichiers ordinaires
Un fichier ordinaire peut être constitué de tout type de données, y compris des programmes exécutables. La plupart des fichiers du système de fichiers Linux sont de ce type.
Répertoires
Un répertoire est un fichier qui contient d’autres fichiers et répertoires, et fournit des pointeurs vers eux.
Il remplit une fonction similaire à celle d’un dossier dans un classeur, en ce sens qu’il vous permet de regrouper des fichiers connexes de manière organisée. Cependant, alors que les dossiers ne peuvent normalement contenir que des fichiers, les répertoires peuvent contenir des répertoires supplémentaires, souvent appelés sous-répertoires.
Liens symboliques
Un lien symbolique – ou logiciel – pointe vers le nom et l’emplacement d’un fichier complètement séparé. Ainsi, lorsque vous ouvrez, copiez, déplacez ou faites autrement référence au lien, l’opération est en fait effectuée sur le fichier référencé. Cette distinction est généralement invisible pour l’utilisateur. Si le fichier référencé est supprimé ou renommé, le lien est rompu et une erreur se produit si vous essayez de l’ouvrir.
Vous pouvez également créer des liens durs. Un lien dur pointe vers les données réelles d’un fichier, exactement de la même manière qu’un fichier ordinaire. Par conséquent, à part le nom, il n’y a pas de différence entre le fichier original et un lien dur qui pointe vers les mêmes données, et les deux peuvent être considérés comme des fichiers ordinaires. Vous pouvez distinguer un lien dur de tout autre fichier ordinaire uniquement par le nombre de liens que chacun possède. Le nombre de liens est affiché dans le deuxième champ d’une liste ls -l. Si ce nombre est supérieur à un, alors vous savez qu’il existe des liens durs supplémentaires vers les données.
Fichiers de périphériques
Tous les périphériques physiques que Linux utilise sont représentés par des fichiers de périphériques.
Les fichiers de périphériques peuvent être classés comme spéciaux en caractères ou spéciaux en blocs. Les fichiers spéciaux de caractères représentent les périphériques qui interagissent avec Linux sur une base caractère par caractère, ou série. Les imprimantes et les terminaux sont des exemples de ce type de périphérique. Les fichiers spéciaux de bloc représentent les périphériques tels que les disques durs ou souples et les CD-ROM, qui interagissent avec Linux en utilisant des blocs de données.
Tous les fichiers de périphérique sont contenus dans le répertoire /dev – par exemple, le fichier associé au premier lecteur de disquettes du système est /dev/fd0.
Les fichiers de périphérique sont extrêmement puissants car ils permettent aux utilisateurs d’accéder aux périphériques matériels tels que les lecteurs de disques, les modems et les imprimantes comme s’il s’agissait de fichiers de données. Par conséquent, vous pouvez déplacer, copier et transférer des données entre ces périphériques facilement, souvent sans avoir à utiliser des commandes ou une syntaxe spéciales.
Noms de fichier et noms de chemin
Chaque fichier se voit attribuer un nom de fichier, qui peut comporter jusqu’à 256 caractères. Ce nom peut être constitué d’un mélange de lettres majuscules et minuscules, de chiffres et de certains signes de ponctuation tels que le point, le tiret ou le trait de soulignement.
Certains caractères ne peuvent pas être utilisés dans les noms de fichiers. Par exemple, vous ne pouvez pas utiliser les caractères qui représentent un séparateur de champ – comme une virgule – ou d’autres caractères spéciaux qui ont une signification particulière pour le shell. Les caractères spéciaux que vous ne pouvez pas utiliser sont
! @ # $ % ^ & * ( ) { } ‘ » \ / | ; < > ‘
Pathnames
Vous pouvez naviguer entre les répertoires sur la ligne de commande en utilisant des noms de chemin. Pour utiliser les noms de chemin, vous devez comprendre la structure des répertoires du système de fichiers Linux. Le répertoire de plus haut niveau dans le système de fichiers Linux est le répertoire racine, qui est représenté par une barre oblique (/). Situés sous le répertoire racine se trouvent les répertoires de premier niveau, suivis d’un ou plusieurs niveaux de sous-répertoires.
Structure de fichiers d’un système de fichiers Linux
Vous pouvez vous déplacer entre les répertoires en utilisant des noms de chemin relatifs ou absolus.
Un nom de chemin relatif commence par votre répertoire actuel. Par exemple, si vous voulez passer au répertoire des dépenses à partir de votre répertoire personnel, vous entrez
cd dépenses
Les noms de chemin relatifs peuvent commencer par le nom d’un fichier ou d’un répertoire, ou par des références symboliques au répertoire actuel (.) ou à son répertoire parent (..), mais jamais par une barre oblique.
Un exemple simple de système de fichiers Linux
Un nom de chemin absolu indique le nom de chemin complet à partir du répertoire racine (/). Par exemple, la commande suivante vous permet de passer de votre répertoire actuel directement au sous-répertoire applic du répertoire usr qui est situé sous le répertoire racine :
cd /usr/applic
Inodes, blocs et fichiers spéciaux
Inodes
Un numéro d’inode unique est attribué à chaque fichier. Un inode est une structure qui définit l’emplacement et les attributs du fichier. Vous pouvez vérifier le numéro d’inode d’un fichier à l’aide de l’option -i de la commande ls. Vous pouvez afficher les informations que l’inode d’un fichier contient à l’aide de la syntaxe stat nom de fichier. La sortie de cette commande (le stat results) affiche les informations relatives à l’inode du fichier « results ».
$ stat results
Fichier : « results »
Taille : 8
Filetype : Fichier régulier
Mode : (0644/-rw-r–r–)
Uid: ( 0/ root)
Gid : ( 0/ root)
Device : 3,7 Inode : 123256 Links : 1
Accès : Tue Jul 25 16:45:00 2000 (00072.18:31:07)
Modification : Thu Jul 20 12:35:20 2000 (00077.22:40:47)
Modification : Thu Jul 20 12:35:20 2000 (00077.22:40:47)
Dans cet exemple, certains des attributs qui sont affichés comprennent le type de fichier, la taille du fichier, l’ID utilisateur (UID) du propriétaire, le nombre de liens durs qui lui sont associés et les heures de création, d’accès et de modification du fichier.
Un inode ne stocke pas le nom d’un fichier. Les noms de fichiers sont stockés dans des répertoires avec leurs numéros d’inode associés. Dans l’exemple de la commande stat, le nom du fichier est obtenu à partir du paramètre filename que vous avez saisi.
Blocs
Dans le système de fichiers Linux, les fichiers sont stockés dans des blocs, qui sont des segments d’espace disque de taille identique. En général, la taille d’un bloc varie de 512 octets à 32 Ko, selon l’installation Linux. La taille maximale d’un fichier dépend de la taille de bloc utilisée dans le système de fichiers. Par exemple, la taille maximale d’un fichier pour un système de fichiers ext2 est de 2 Go s’il utilise des blocs de 512 octets.
Les systèmes de disques récupèrent les données par blocs, donc plus la taille du bloc est grande, plus l’accès est efficace. Le problème de la création de grands blocs est qu’elle peut gaspiller de l’espace disque. Par exemple, si la taille de bloc est de 4 Ko et que la plupart des fichiers ne contiennent que quelques octets de données, la majeure partie des 4096 octets d’espace disque est gaspillée pour chaque fichier. Mais si vous rendez les tailles de bloc petites, l’accès au disque sera relativement moins efficace.
Certaines commandes, telles que df, sortent les informations du disque dans des blocs de 1 Ko, même si l’installation stocke les fichiers dans une taille de bloc différente. Une façon simple de vérifier la taille de bloc de votre système est d’utiliser la commande du pour afficher l’utilisation du disque. Dans cet exemple, l’utilisation du disque pour tous les fichiers commençant par « m » est affichée.
$ du -h m*
36k mail
4.0k mail.rc
12k mailcap
12k mailcap.vga
4.0k man.config
4.0k mc.global
148k midi
40k mime-magic
104k mime-magic.dat
8.0k mime.types
4.0k minicom.users
0 motd
4.0k mtab
Dans cet exemple, la sortie de la commande du affiche la taille des fichiers sur le disque par incréments de la taille du bloc, qui est de 4,0 Ko dans ce cas. Une exception à cette règle est lorsque zéro est affiché, ce qui indique que le fichier est complètement vide.
Fichiers spéciaux
En plus des autres types de fichiers, Linux fait usage de fichiers spéciaux, qui sont des fichiers définis par le système et qui exécutent des fonctions uniques lorsqu’on y accède.
Les fichiers spéciaux et leurs fonctions
Par exemple, si vous devez vous débarrasser de la sortie indésirable d’une commande, vous pouvez rediriger la sortie vers le fichier /dev/null. Dans cet exemple, toute erreur générée par la commande find est redirigée de stderr vers /dev/null.
$ find / -n monfichier 2> /dev/null
.