Introducción
stat
es una utilidad de línea de comandos que muestra información detallada sobre ciertos archivos o sistemas de archivos.
Este artículo explica cómo usar el stat
en Linux.
Usando el comando Stat
La sintaxis del stat
es la siguiente:
stat [OPTION]... FILE...
stat
acepta uno o más FILE
e incluye un conjunto de opciones que controlan el comportamiento y la salida del comando.
Echemos un vistazo al siguiente ejemplo:
stat mylog.log
La salida se verá así:
File: mylog.log
Size: 1239291 Blocks: 2424 IO Block: 512 regular file
Device: 2h/2d Inode: 24769797950641873 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/piero) Gid: ( 1000/piero)
Access: 2019-09-28 20:01:33.130738600 +0200
Modify: 2019-08-08 03:04:23.000000000 +0200
Change: 2019-09-28 20:01:33.143704400 +0200
Birth: -
Cuando se invoca sin ninguna opción, se muestra la siguiente información de archivo:
- Archivo: el nombre del archivo.
- Tamaño: el tamaño del archivo en bytes.
- Bloques: el número de bloques asignados adquiridos del archivo.
- Bloque de E /S: el tamaño en bytes de cada bloque.
- Tipo de archivo - (por ejemplo, archivo normal, directorio, enlace simbólico...)
- Dispositivo: número de dispositivo en hexadecimal y decimal.
- Inode: número de nodo.
- Conexiones: número de conexiones reales.
- Acceso: permisos de archivo en métodos numéricos y simbólicos.
- Uid: ID de usuario y nombre del propietario.
- Gid: ID de grupo y nombre del propietario.
- Contexto: el contexto de seguridad de SELinux.
- Acceso: la última vez que se accedió al archivo.
- Editar: la última vez que se modificó el contenido del archivo.
- Editar: la última vez que se cambió el atributo o el contenido del archivo.
- Nacimiento: hora de creación del archivo (no compatible con Linux).
Ver información del sistema de archivos
Para obtener información sobre el sistema de archivos donde reside el archivo especificado, en lugar de información sobre el archivo en sí, use la -f
, ( --file-system
):
stat -f mylog.log
La salida del comando se verá así:
File: "mylog.log"
ID: 100000000 Namelen: 255 Type: wslfs
Block size: 4096 Fundamental block size: 4096
Blocks: Total: 60884223 Free: 40801995 Available: 40801995
Inodes: Total: 999 Free: 1000000
Cuando se invoca stat
-f
, muestra la siguiente información:
- Archivo: el nombre del archivo.
- ID: ID del sistema de archivos en hexadecimal.
- Namelen: longitud máxima de los nombres de archivo.
- Tamaño de bloque fundamental: el tamaño de cada bloque en el sistema de archivos.
- Bloqueos: - Total: número total de bloqueos en el sistema de archivos. Gratis: número de bloques libres en el sistema de archivos. Disponible: número de bloques libres disponibles para usuarios no root.
- Inodos: Total: número total de inodos en el sistema de archivos. Libre: número de inodos libres en el sistema de archivos.
Desreferencia (Seguir) Enlace simbólico
Por defecto, stat
no sigue enlaces simbólicos. Si ejecuta el comando en un enlace simbólico, la salida incluirá información sobre el enlace simbólico, no el archivo al que apunta:
stat /etc/resolv.conf
File: /etc/resolv.conf ->../run/resolvconf/resolv.conf
Size: 29 Blocks: 0 IO Block: 512 symbolic link
Device: 2h/2d Inode: 562949953739123 Links: 1
Access: (0777/lrwxrwxrwx) Uid: ( 0/root) Gid: ( 0/root)
Access: 2019-08-01 22:25:40.458719400 +0200
Modify: 2019-08-01 22:25:40.458719400 +0200
Change: 2019-08-01 22:25:40.458719400 +0200
Birth: -
Para eliminar la referencia (seguir) el enlace simbólico y mostrar información sobre el archivo al que apunta el enlace simbólico, use la -L
, ( --dereference
):
stat -L /etc/resolv.conf
File: /etc/resolv.conf
Size: 195 Blocks: 0 IO Block: 512 regular file
Device: 7h/7d Inode: 1970324837678224 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/root) Gid: ( 0/root)
Access: 2019-11-07 23:52:30.624839800 +0100
Modify: 2019-11-07 23:52:30.640820100 +0100
Change: 2019-11-07 23:52:30.640820100 +0100
Birth: -
Personalizando la salida
El stat
tiene dos opciones que le permiten personalizar la salida para que se adapte a sus necesidades:, -c
( --format="format"
) y --printf="format"
.
La diferencia entre estas dos opciones es que cuando se utilizan dos o más archivos como operadores, el --format
agrega automáticamente una nueva línea después de la salida de cada operando. La --printf
interpreta barras invertidas.
Hay muchas directivas de formato de archivos y sistemas de archivos que se pueden usar con --format
y --printf
.
Por ejemplo, para ver solo el tipo de archivo, utilice:
stat --format="%F" /dev/null
character special file
Puede combinar cualquier cantidad de directivas de formato y, opcionalmente, usar separadores personalizados entre ellas. El separador puede ser un solo carácter o una cadena:
stat --format="%n,%F" /dev/null
/dev/null,character special file
Para interpretar caracteres especiales como nueva línea o tabulación, use la opción --printf
stat --printf='Name: %n\nPermissions: %a\n' /etc
\n
imprime una nueva línea:
Name: /etc
Permissions: 755
stat
también puede mostrar información en forma concisa. Este formato es útil para el análisis de otras utilidades.
Invoque el comando con la -t
( --terse
) para imprimir la salida de forma concisa:
stat -t /etc
/etc 512 0 41ed 0 0 2 562949953701446 1 0 0 1558449784 1573167150 1573167150 0 512
Para obtener una lista completa de todas las directivas de formato para archivos y tipos de sistemas de archivos, use los man stat
o stat --help
en la terminal.
Conclusión
El stat
imprime información sobre ciertos archivos y sistemas de archivos.
En Linux, hay muchos otros comandos que pueden mostrar información sobre ciertos archivos, ls
el más utilizado, pero solo muestra parte de la información proporcionada por el comando stat