Chaque fichier et dossier du système de fichiers possède une structure appelée Inode, dans laquelle sont stockées les métadonnées de cet objet. Cette structure contient le propriétaire, le groupe de propriétaires, l'heure de modification, de création et d'accès au fichier, ainsi que d'autres informations. Ces informations peuvent être consultées non seulement à l'aide d'outils de débogage du système de fichiers, mais aussi à l'aide de la commande ls. Certaines informations sont affichées par l'utilitaire ls
, mais si vous avez besoin de plus d'informations, vous pouvez utiliser la commande stat
. Nous allons maintenant vous expliquer comment utiliser cette commande sous Linux.
La syntaxe de la commande est simple. Il faut lui passer des options et le chemin d'accès au fichier pour lequel vous souhaitez obtenir des informations :
$ stat [options] /path/to/file
Il n'est pas nécessaire de passer des options et il n'y en a pas beaucoup :
-L, déréférence
- affiche des informations sur le fichier au lieu d'un lien symbolique ;
-f, --file-system
- affiche des informations sur le système de fichiers dans lequel se trouve le fichier ;
-c, --format
- permet de spécifier le format de sortie au lieu du format standard, chaque fichier est affiché sur une nouvelle ligne ;
--printf
- similaire à --format
, mais pour une nouvelle ligne, vous devez utiliser ;
-t, --terse
- affiche les informations sous une forme très brève, sur une seule ligne ;
--version
- affiche la version de l'utilitaire.
Voyons quelques exemples d'utilisation. Pour obtenir des informations sur un fichier, il suffit d'exécuter le programme sans options en lui indiquant le chemin d'accès au fichier, par exemple /etc/passwd
:
$ stat /etc/passwd
Sortie du programme :
Fichier
- le chemin d'accès au fichier pour lequel les informations sont affichées ;
Taille
- la taille du fichier en octets ;
IO
Block - taille du bloc du système de fichiers en octets ;
Blocs
- nombre de blocs du système de fichiers occupés par le fichier ;
Device
- identifiant du dispositif, par exemple le disque dur, sur lequel le fichier est enregistré ;
Inode - numéro d'inode unique de ce fichier ;
Liens
- nombre de liens matériels vers ce fichier ;
Accès -
droits d'accès
au fichier ;
Uid
- identifiant et nom de l'utilisateur-propriétaire du fichier ;
Gid
- identifiant et nom du groupe de fichiers ;
Access
- heure du dernier accès au fichier ;
Modify
- heure à laquelle le contenu du fichier a été modifié pour la dernière fois ;
Modifié
- date de la dernière modification des attributs ou du contenu du fichier ;
Created(Birth
) - réservé à l'affichage de la date de création originale du fichier, mais pas encore implémenté.
Nous devons en dire un peu plus sur le format temporel. Par exemple, l'heure du dernier accès au fichier est 2020-12-02 18:25:01.043831739 +0200. Cette heure est affichée en tenant compte du fuseau horaire. Et les chiffres +0200 indiquent que le fuseau horaire de l'ordinateur qui a créé ou modifié ce fichier est supérieur de deux heures à l'UTC, c'est-à-dire l'Europe/Kiev à l'heure d'hiver.
Si vous essayez de passer un lien symbolique à l'utilitaire, il n'affichera que les informations de l'Inode du lien lui-même :
$ stat /etc/passwdlin
Pour obtenir des informations sur le fichier pointé par le lien, utilisez l'option -L :
$ stat -L /etc/passwdlink
Vous pouvez passer plus d'un fichier :
$ stat /etc/passwd /etc/group
Pour formater la sortie, vous pouvez utiliser les séquences de caractères suivantes :
%A
- droits d'accès ;
%b
- nombre de blocs occupés ;
%F
- type de fichier ;
%g
- identifiant du groupe de fichiers ;
%G
- nom du groupe de fichiers ;
%i
- identificateur d'inode ;
%n
- nom du fichier ;
%s
- taille du fichier ;
%u
- identifiant du propriétaire du fichier ;
%U
- nom du propriétaire du fichier ;
%x
- heure du dernier accès ;
%y
- heure de la dernière modification du contenu ;
%z
- heure de la dernière modification du contenu ou des attributs.
Ce ne sont pas toutes les séquences possibles, vous pouvez en trouver d'autres dans l'aide de l'utilitaire :
$ man stat
Par exemple, affichons seulement le nom d'un fichier et l'heure de la dernière modification de son contenu :
$ stat --printf "File %n has been modified %y " /etc/passwd /etc/group
Si vous souhaitez obtenir des informations sur le système de fichiers dans lequel se trouve le fichier, vous devez utiliser l'option -f :
$ stat -f /etc/passwd
Voyons ce que signifient les champs affichés par l'utilitaire :
Fichier
- le nom du fichier ;
Type
- le type de système de fichiers ;
ID
- identifiant du système de fichiers ;
Longueur du nom(Namelen
) - longueur maximale du nom dans le système de fichiers ;
Taille dubloc
- quantité de données dans une requête de lecture ou d'écriture pour une vitesse optimale ;
Taille dubloc fondamental
- taille du bloc physique dans le système de fichiers.
Viennent ensuite le nombre total de blocs dans le système et le nombre de blocs libres.