stat
es una utilidad de línea de comandos que muestra información detallada sobre archivos o sistemas de archivos determinados.
Este artículo explica cómo usar stat
comando.
Usando el stat
Comando #
La sintaxis para stat
El comando es el siguiente:
stat [OPTION]... FILE...
stat
acepta una o más entradas FILE
nombres e incluye una serie de opciones que controlan el comportamiento y la salida del comando.
Echemos un vistazo al siguiente ejemplo:
stat file.txt
La salida se verá así:
File: file.txt
Size: 4030 Blocks: 8 IO Block: 4096 regular file
Device: 801h/2049d Inode: 13633379 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ linuxize) Gid: ( 1000/ linuxize)
Access: 2019-11-06 09:52:17.991979701 +0100
Modify: 2019-11-06 09:52:17.971979713 +0100
Change: 2019-11-06 09:52:17.971979713 +0100
Birth: -
Cuando se invoca sin ninguna opción, stat
muestra la siguiente información del archivo:
- Archivo:el nombre del archivo.
- Tamaño:el tamaño del archivo en bytes.
- Bloques:el número de bloques asignados que ocupa el archivo.
- Bloque IO:el tamaño en bytes de cada bloque.
- Tipo de archivo:(p. ej., archivo normal, directorio, enlace simbólico).
- Dispositivo:número de dispositivo en hexadecimal y decimal.
- Inodo:número de inodo.
- Enlaces - Número de enlaces duros.
- Acceso - Permisos de archivos en los 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.
- Modificar:la última vez que se modificó el contenido del archivo.
- Cambiar:la última vez que se cambió el atributo o el contenido del archivo.
- Nacimiento:hora de creación del archivo (no compatible con Linux).
Mostrar información sobre el sistema de archivos #
Para obtener información sobre el sistema de archivos donde reside el archivo dado, en lugar de información sobre el archivo en sí, use -f
, (--file-system
) opción:
stat -f file.txt
La salida del comando se verá así:
File: "package.json"
ID: 8eb53097b4494d20 Namelen: 255 Type: ext2/ext3
Block size: 4096 Fundamental block size: 4096
Blocks: Total: 61271111 Free: 25395668 Available: 22265851
Inodes: Total: 15630336 Free: 13979610
Cuando stat
se invoca con -f
opción, 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.
- Bloques:
- Total:número de bloques totales en el sistema de archivos.
- Libre:número de bloques libres en el sistema de archivos.
- Disponible:número de bloques gratuitos disponibles para usuarios no root.
- Inodos:
- Total:número de inodos totales en el sistema de archivos.
- Libre:número de inodos libres en el sistema de archivos.
Dereference (Follow) Symlinks #
Por defecto, stat
no sigue los 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/systemd/resolve/stub-resolv.conf
Size: 39 Blocks: 0 IO Block: 4096 symbolic link
Device: 801h/2049d Inode: 8126659 Links: 1
Access: (0777/lrwxrwxrwx) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2019-11-06 21:12:26.875956073 +0100
Modify: 2018-07-24 11:11:48.128794519 +0200
Change: 2018-07-24 11:11:48.128794519 +0200
Birth: -
Para desreferenciar (seguir) el enlace simbólico y mostrar información sobre el archivo al que apunta el enlace simbólico, utilice -L
, (--dereference
) opción:
stat -L /etc/resolv.conf
File: /etc/resolv.conf
Size: 715 Blocks: 8 IO Block: 4096 regular file
Device: 17h/23d Inode: 989 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 101/systemd-resolve) Gid: ( 103/systemd-resolve)
Access: 2019-11-06 20:35:25.603689619 +0100
Modify: 2019-11-06 20:35:25.555689733 +0100
Change: 2019-11-06 20:35:25.555689733 +0100
Birth: -
Personalizar la Salida #
La stat
El comando tiene dos opciones que le permiten personalizar la salida según sus necesidades:-c
, (--format="format"
) y --printf="format"
.
La diferencia entre estas dos opciones es que cuando se usan dos o más archivos como operantes --format
agrega automáticamente una nueva línea después de la salida de cada operando. El --printf
interpreta escapes de barra invertida.
Hay muchas directivas de formato para archivos y sistemas de archivos que se pueden usar con --format
y --printf
.
Por ejemplo, para ver solo el tipo de archivo, ejecutaría:
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 --printf
opción:
stat --printf='Name: %n\nPermissions: %a\n' /etc
\n
imprime una nueva línea:
Name: /etc
Permissions: 755
La stat
también puede mostrar la información en forma concisa. Este formato es útil para el análisis de otras utilidades.
Invoque el comando con -t
(--terse
) opción para imprimir la salida en la forma concisa:
stat -t /etc
/etc 12288 24 41ed 0 0 801 8126465 147 0 0 1573068933 1573068927 1573068927 0 4096
Para obtener una lista completa de todas las directivas de formato para archivos y tipos de sistemas de archivos, man stat
o stat --help
en tu terminal.
Conclusión #
La stat
El comando imprime información sobre archivos y sistemas de archivos dados.
En Linux, varios otros comandos pueden mostrar información sobre archivos dados, con ls
siendo el más utilizado, pero muestra solo una parte de la información proporcionada por el stat
comando.
Si tiene alguna pregunta o comentario, no dude en dejar un comentario.