Objeto del Sistema de archivos en Linux
El objeto del sistema de archivos en Linux funciona agrupándose en un árbol jerárquico. Es decir, esta organización nos brinda la posibilidad de contener diversos archivos, donde algunos tendrán el mismo nombre, pero al estar organizados en una forma de árbol jerárquico podremos realizar diversas tareas, entre ellas, “ver” nombres de archivos iguales, pero ¿Cada objeto es único? La manera en que se administran estos objetos es mediante tablas propias del sistema de archivos, las cuales tienen diferentes propiedades.
Ahora nos focalizaremos en los directorios y los archivos.
Table of Contents
ToggleDirectorios y archivos
Los directorios son contenedores que van a incluir la información de los objetos, tanto de directorios como de otros archivos.
En Linux, el directorio de mayor jerarquía es la raíz “/”, a partir de ahí surgen todos los demás directorios y archivos. Un archivo, por otro lado, fes el que va a contener información; en cambio, un directorio, nos da un orden de cómo vamos a poder ver todos los archivos y/o directorios. Para poder especificar una ruta se antepone ”/” porque todo nace de ahí; en cambio, si quisiéramos nombrar un archivo de nuestro home, la ruta completa del archivo sería la siguiente:
/home/nombre_usuario/test.sh. No debemos confundir “root filesystem” con “root home directory”.
Inodos
La forma en que el sistema de archivos identifica a los objetos es mediante los inodos. Estos traen información acerca de los objetos; cada uno tiene distintas propiedades, que, dependiendo de su uso, va a cambiar el valor que contenga (por ejemplo: datos que posee, ubicación, fecha de modificación, tamaño, datos seguridad, etc).
El comando stat es de gran utilidad para mostrar dicha información, por ejemplo:
# stat /etc/resolv.conf
Fichero: /etc/resolv.conf
Tamaño: 53 Bloques: 8 Bloque E/S: 4096 fichero regular
Dispositivo: fd00h/64768d Nodo-i: 1569940 Enlaces: 1
Acceso: (0644/-rw-r–r–) Uid: ( 0/ root) Gid: ( 0/ root)
Acceso: 2022-08-24 16:43:12.559999257 -0300
Modificación: 2022-08-24 16:43:12.559999257 -0300
Cambio: 2022-08-24 16:43:12.559999257 -0300
Creación: 2022-08-24 16:43:12.559999257 -0300
En otras palabras, este comando nos informa sobre las propiedades de un archivo:
Nombre
Tamaño
Tipo de archivo
El número de i-nodo
La cantidad de enlaces que en archivos regulares refiere a cuántos archivos tienen el mismo número de i-nodos.
Permisos y propietarios.
Marcas de tiempo:
Acceso (atime): La última vez que se accedió al archivo.
Modificación (mtime): La última vez que se modificó el contenido de un archivo.
Cambio (ctime): La última vez que se cambiaron metadatos del archivo, por ejemplo, los permisos.
Creación: La fecha de creación tradicionalmente no se usa en los sistemas de archivos en Unix.
Comando ls
El comando ls se utiliza para mostrar el contenido de directorios, como así también ver propiedades de los distintos archivos.
Sintaxis:
#ls (opciones) [archivo1] [archivo2] [archivoX]
#ls (opciones) [directorio1] [directorio2]
Podemos valernos del comando “man” seguido del comando ls (o cualquier otro comando) para ver sus funciones. Sin embargo, las opciones más utilizadas con ls suelen ser:
-a Muestra todos los archivos, incluso los ocultos.
– l Muestra el tipo de archivo, permisos, propietarios, tamaño, fecha de modificación).
-h Muestra el tamaño de los archivos en una unidad fácil de leer.
-r Ordena los archivos de manera inversa.
-t Ordena los archivos por fecha de modificación.
Ejemplo:
Comando cd
Este comando se utiliza para avanzar o retroceder niveles de directorios.
Ejemplo:
# cd dir # (cambio a un directorio hijo)
# cd .. # (retrocedo)
En el caso colocar solamente «cd» nos llevará directamente a nuestro home.
Caracteres comodines
Estas herramientas son fundamentales para el objeto del sistema de archivos en Linux. Esto se debe a que los comodines o metacaracteres (file globbing) nos van a servir para tomar acción sobre múltiples archivos/directorios que contengan cierta cadena de caracteres en su nombre. Para ello, debemos tener en cuenta que los comodines son interpretados por la Shell (terminal) y no por los comandos, cuando un comando es puesto con comodines, la shell los interpreta a estos y otros tipos de expansiones, para luego ejecutar el comando.
Este proceso es invisible para el usuario. Para referirnos a uno o más archivos lo podemos hacer de una manera más acotada.
Veamos los siguientes comodines:
Comodín *
Coincide con cualquier cadena de texto, incluso con la cadena vacía. De manera predeterminada se excluyen los nombres de archivos que comienzan con “.”
Ejemplo:
rm * (borrará todos los archivos en el directorio en el que estemos parados) rm *ho (borrará todo lo que comience con ho) rm * la (borrará todos los archivos que terminen con la cadena de texto ‘ho’)
Comodín ?
Coincide con un único caracter.
Ejemplo:
ls -l /bin/z??? va a coincidir con archivos que comienzan con z seguidos exactamente 3 caracteres.
Comodín [lista o rango]
Coincide con cualquier de los caracteres encerrados entre corchetes.
Ejemplo:
ls -l /bin/[a-d][ar]?? va a coincidir con los archivos cuyo nombre empieza con a, b, c o d, el segundo caracter puede ser una a o una r. Los dos últimos caracteres pueden ser cualquiera.
Comodín [!lista o rango]
Coincide con cualquiera de los caracteres no encerrados entre corchetes.
Ejemplo:
ls -l /bin/[a-d][ar]?? Esta cadena NO va a coincidir con los archivos cuyo nombre empiecen con los mencionados anteriormente.
Comodín {cadena1, cadena2..}
Se usa para generar cadenas de texto arbitrarias.
Ejemplo:
mkdir dir{1,2,3,4,5} generará los directorios dir1, dir2, dir3, dir4 y dir5.