Vérifier l’état du fichier sous Linux avec la commande stat

Les stat
commande, incluse dans le GNU coreutils
package, fournit une variété de métadonnées, y compris la taille du fichier, l’emplacement de l’inode, les autorisations d’accès et le contexte SELinux, ainsi que les heures de création et de modification, concernant les fichiers et les systèmes de fichiers. C’est un moyen pratique de rassembler des informations que vous avez généralement besoin de plusieurs commandes différentes pour acquérir.
Installer stat sur Linux
Sous Linux, vous avez probablement déjà le stat
commande installée car elle fait partie d’un package d’utilitaires de base généralement fourni par défaut avec les distributions Linux.
Dans le cas où vous n’avez pas stat
installé, vous pouvez installer coreutils
avec votre gestionnaire de paquets.
Alternativement, vous pouvez compiler coreutils à partir du code source.
Obtenir le statut d’un fichier
Fonctionnement stat
fournit une sortie facile à lire sur un fichier ou un répertoire spécifique.
$ stat planets.xml
File: planets.xml
Size: 325 Blocks: 8 IO Block: 4096 regular file
Device: fd03h/64771d Inode: 140217 Links: 1
Access: (0664/-rw-rw-r--) Uid: (1000/tux) Gid: (100/users)
Context: unconfined_u:object_r:user_home_t:s0
Access: 2021-08-17 18:26:57.281330711 +1200
Modify: 2021-08-17 18:26:58.738332799 +1200
Change: 2021-08-17 18:26:58.738332799 +1200
Birth: 2021-08-17 18:26:57.281330711 +1200
C’est peut-être facile à lire, mais c’est quand même beaucoup d’informations. Voici quoi stat
couvre :
- Déposer: le nom du fichier
- Taille: la taille du fichier en octets
- Blocs: le nombre de blocs sur le disque dur réservés à ce fichier
- Bloc d’E/S: la taille d’un bloc du système de fichiers
- fichier ordinaire: le type de fichier (fichier normal, répertoire, système de fichiers)
- Dispositif: l’appareil où se trouve le fichier
- Inode: le numéro d’inode où se trouve le fichier
- Liens: le nombre de liens vers le fichier
- Accès, UID, GID: autorisations de fichier, utilisateur et propriétaire du groupe
- Le contexte: contexte SELinux
- Accéder, Modifier, Changer, Naissance: l’horodatage du moment où le fichier a été accédé, modifié, changé d’état et créé
Sortie laconique
Pour les personnes qui connaissent bien la sortie, ou qui veulent analyser la sortie avec d’autres utilitaires comme awk, il y a le --terse
(-t
en abrégé), qui formate la sortie sans en-têtes ni sauts de ligne.
$ stat --terse planets.xml
planets.xml 325 8 81b4 100977 100 fd03 140217 1 0 0 1629181617 1629181618 1629181618 1629181617 4096 unconfined_u:object_r:user_home_t:s0
Choisir son propre format
Vous pouvez définir votre propre format de sortie en utilisant le --printf
option et une syntaxe similaire à printf. Chaque attribut signalé par stat
a une séquence de format (%C
pour le contexte SELinux, %n
pour le nom du fichier, etc.), vous pouvez donc choisir ce que vous voulez voir dans un rapport.
$ stat --printf="%nn%Cn" planets.xml
planets.xml
unconfined_u:object_r:user_home_t:s0
$ $ stat --printf="Name: %nnModified: %yn" planets.xml
Name: planets.xml
Modified: 2021-08-17 18:26:58.738332799 +1200
Voici quelques séquences de format courantes :
- %une des droits d’accès
- %F Type de fichier
- %n nom de fichier
- %U Nom d’utilisateur
- %u ID de l’utilisateur
- %g identifiant de groupe
- %w heure de naissance
- %y heure de modification
Une liste complète des séquences de format est disponible dans le stat
page de manuel et le coreutils
pages d’informations.
Informations sur le fichier
Si vous avez déjà essayé d’analyser la sortie de ls -l
, alors vous apprécierez la flexibilité du stat
commander. Vous n’avez pas toujours besoin de toutes les informations par défaut qui stat
fournit, mais la commande est inestimable lorsque vous en avez besoin de tout ou partie. Que vous lisiez sa sortie dans son format par défaut ou que vous créiez vos propres requêtes, le stat
La commande vous donne un accès facile aux données sur vos données.