Cómo utilizar el comando stat en Linux

El comando stat en Linux sirve para obtener información muy detallada sobre archivos y carpetas.

Consigue gratis tu cuenta

Crea una API REST con Node.js y MongoDB

En este curso vas a aprender a crear una API REST con Node.js y MongoDB, además de crear un entorno de desarrollo con Docker y Docker Compose.

Comenzar ahora

Linux nos proporciona mucha información sobre nuestros archivos y para obtener información sobre los ficheros y carpetas disponemos del comando ls. Sin embargo, hay un comando con el que es posible obtener mucha más información si cabe: en este artículo vamos a aprender cómo utilizar el comando stat en Linux.

Qué es el comando stat

El comando stat es parte de las GNU Core Utilities, que son herramientas que vienen preinstaladas en prácticamente todos los sistemas UNIX y Linux. Se utiliza para mostrar por pantalla los atributos de un archivo.

Sintaxis básica del comando stat

El comando stat utiliza una estructura muy básica, ya que simplemente es necesario indicarle el nombre del archivo como argumento del comando. Además, también podemos añadirle más parámetros que veremos a continuación.

stat [OPTION]... FILE...

Por ejemplo, vamos a crear un archivo llamado aprender-linux.txt y vamos a añadir el siguiente contenido: "Estamos aprendiendo a utilizar el comando stat en Linux."

A continuación, ejecutamos el comando stat sobre el archivo que acabamos de crear:

stat aprender-linux.txt
File: 'aprender-linux.txt'
Size: 57 Blocks: 8 IO Block: 4096 regular file
Device: fc00h/64512d Inode: 3674171 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 1000/ vagrant) Gid: ( 1000/ vagrant)
Access: 2020-01-28 18:53:37.946459999 +0000
Modify: 2020-01-28 18:52:29.168088002 +0000
Change: 2020-01-28 18:52:29.172090002 +0000
Birth: -

Vemos que hay diferentes atributos en la salida del comando y en este caso el atributo Birth está vacío. Esto dependerá de la versión del kernel de Linux que estéis utilizando. Birth aparece a partir de la versión 4.11.

Explicación de la salida del comando

Al ejecutar el comando stat sobre el fichero aprender-linux.txt hemos visto que tenemos varios atributos. ¿Qué significa cada uno de ellos?

- File: nombre del archivo

- Size: tamaño del archivo en kb

- Blocks: número de bloques reservados en disco

- IO Block: tamaño de los bloques

- File type: tipo de fichero

- Device: identificador del disco duro en el que se almacena el archivo

- Inode: número de inodes

- Links: número de enlaces al archivo en el sistema de ficheros

- Access: permisos

- UID y GID: identificadores de usuario y grupo de los propietarios

- Context: contexto SELinux

- Access: fecha del último acceso al fichero

- Modify: fecha de la última modificación del contenido

- Change: fecha de la última actualización de los atributos del archivo

- Birth: fecha de creación del archivo

Opciones del comando stat

El comando stat ofrece muchas opciones para poder utilizarlo y podemos conocerlas con el siguiente comando:

stat --help

stat puede utilizarse para obtener información específica sobre un fichero y es posible modificar su salida por pantalla para que sea más legible:

Mostrar información del sistema de ficheros

Utilizando el parámetro -f seremos capaces de obtener información sobre el sistema de ficheros en lugar de sobre un fichero concreto:

stat -f GeekyTheory 
File: "GeekyTheory"
ID: c89d5f447a1cc5c9 Namelen: 255 Type: ext2/ext3
Block size: 4096 Fundamental block size: 4096
Blocks: Total: 16048601 Free: 14598815 Available: 13777823
Inodes: Total: 4087808 Free: 3719413

Mostrar información de un enlace simbólico

Si se ejecuta el comando sobre un enlace simbólico nos dará información sobre el propio enlace y no sobre el fichero al que hace referencia:

stat aprender-linux
File: 'aprender-linux' -> 'aprender-linux.txt'
Size: 18 Blocks: 0 IO Block: 4096 symbolic link
Device: fc00h/64512d Inode: 3674169 Links: 1
Access: (0777/lrwxrwxrwx) Uid: ( 1000/ vagrant) Gid: ( 1000/ vagrant)
Access: 2020-01-28 19:44:21.964609644 +0000
Modify: 2020-01-28 19:44:21.228609644 +0000
Change: 2020-01-28 19:44:21.228609644 +0000
Birth: -

Eliminar los nombres de los atributos de la salida

Para obtener toda la información pero si el nombre de los atributos podemos utilizar el parámetro -t:

stat -t aprender-linux
aprender-linux 18 0 a1ff 1000 1000 fc00 3674169 1 0 0 1580240661 1580240661 1580240661 0 4096

Dar formato a la salida del comando stat

Con -c (--format) podemos especificar exactamente qué información queremos que nos devuelva el comando. Los parámetros disponibles los podemos ver con --help.

Por ejemplo, vamos a mostrar el tipo de un enlace simbólico:

stat -c %F aprender-linux
symbolic link

Y ahora vamos a mostrar el tipo del archivo al que hace referencia:

stat -c %F aprender-linux.txt 
regular file

¿Qué uso le puedo dar a este comando?

La realidad es que este comando proporciona mucha información y a veces podría llegar a ser incluso demasiada, teniendo además el comando ls. Sin embargo, nunca está de más conocer nuevos comandos de Linux porque quizá algún día podamos necesitarlos.

Si quieres saber más sobre este comando, te recomiendo que visites su man page.

Artículos relacionados


¿Quieres seguir aprendiendo?