La estructura de directorios en Linux es jerárquica, con el directorio raíz representado por una barra diagonal (/). Cualquier otro directorio puede ser conectado (montado) o desconectado (desmontado) de esta estructura.
En el sistema de archivos, las rutas se especifican de dos maneras:
- Ruta absoluta: Se inicia desde la raíz del sistema. Por ejemplo:
/usr/share/doc. - Ruta relativa: No comienza con la raíz. Se define en relación con la ubicación actual. Por ejemplo, para ir de
/usr/share/doca/usr/share/man, se puede usarcd ../man.
A continuación se describen las operaciones fundamentales para gestionar directorios y archivos.
Listado de contenido (ls)
El comando ls lista el contenido de un directorio. Las opciones más comunes son:
-a: Incluye archivos ocultos (aquellos cuyo nombre comienza con un punto).-l: Proporciona un listado detallado que incluye permisos, propietario, tamaño y fecha de modificación.
Ejemplo para listar todos los archivos, incluyendo los ocultos, en el directorio actual con detalles:
ls -al .
Cambio de directorio (cd)
El comando cd (Change Directory) permite navegar entre directorios. Acepta tanto rutas absolutas como relativas.
# Navegar al directorio de inicio de un usuario
cd ~
# Subir un nivel en la jerarquía de directorios
cd ..
# Ir a la raíz del sistema
cd /
Mostrar ruta actual (pwd)
El comando pwd (Print Working Directory) muestra la ruta completa del directorio de trabajo actual. La opción -P muestra la ruta física real, resolviendo enlaces simbólicos.
pwd
# Resultado: /home/usuario
cd /var/mail
pwd -P
# Puede mostrar: /var/spool/mail
Creación de directorios (mkdir)
El comando mkdir (Make Directory) crea nuevos directorios.
-p: Permite crear una jerarquía completa de directorios anidados de forma recursiva.-m: Establece los permisos del directorio en el momento de la creación (ej.-m 750).
Ejemplo:
# Crear un solo directorio
mkdir mi_proyecto
# Crear una estructura de directorios anidada
mkdir -p proyectos/2023/informes
# Crear un directorio con permisos específicos
mkdir -m 700 directorio_seguro
Eliminación de directorios (rmdir y rm)
rmdir elimina únicamente directorios vacíos. La opción -p elimina la cadena de directorios padre si quedan vacíos tras la eliminación.
# Eliminar un directorio vacío
rmdir directorio_vacio
# Eliminar una jerarquía de directorios vacíos
rmdir -p a/b/c
Para eliminar directorios con contenido, se utiliza el comando rm con la opción recursiva -r. Se debe usar con extrema precaución.
# Eliminar un directorio y todo su contenido (¡PELIGROSO!)
rm -r directorio_con_archivos
Copia de archivos y directorios (cp)
El comando cp copia archivos o directorios.
-r: Copia directorios de forma recursiva.-i: Pide confirmación antes de sobrescribir un archivo en el destino.-a: Modo archivo, preseerva todos los atributos (equivalente a-dpR).
# Copiar un archivo al directorio actual
cp /etc/hosts .
# Copiar un directorio y su contenido de forma recursiva
cp -r /ruta/origen /ruta/destino
# Copiar con confirmación interactiva
cp -i documento.txt backup/
Eliminación de archivos (rm)
El comando rm elimina archivos.
-f: Fuerza la eliminación sin pedir confirmación.-i: Pide confirmación antes de eliminar cada archivo.
# Eliminar un archivo
rm archivo_temporal
# Eliminar de forma forzada sin confirmación
rm -f registro.log
La combinación rm -rf / destruye todo el sistema y nunca debe ejecutarse.
Movimiento y renombrado (mv)
El comando mv (Move) mueve o renombra archivos y directorios.
# Mover un archivo a otro directorio
mv informe.pdf documentos/
# Renombrar un archivo
mv datos_viejos.csv datos_nuevos.csv
# Mover y renombrar simultáneamente
mv ~/imagen.png ./fotos/perfil.png
Permisos y propietarios
Cada archivo y directorio en Linux posee un conjunto de permisos que definen quién puede leer (r), escribir (w) o ejecutar (x) el recurso. Estos permisos se aplican a tres categorías de usuarios: el propietario (u), el grupo propietario (g) y otros (o).
El comando ls -l muestra esta información. La primera posición indica el tipo de archivo (d para directorio, - para archivo regular), seguido de tres triadas de permisos (rwx) para propietario, grupo y otros.
Los comandos para modificar permisos y propietarios son:
chmod: Cambia los permisos. Se puede usar notación numérica (octal) o simbólica.chown: Cambia el propietario y/o grupo de un archivo.chgrp: Cambia únicamente el grupo propietario.
Ejemplo de notación numérica con chmod:
# Permisos: propietario=rwx (7), grupo=rx (5), otros=r (4)
chmod 754 script.sh
# Cambiar el propietario a 'maria' y el grupo a 'desarrollo'
chown maria:desarrollo archivo.conf
# Cambiar recursivamente el grupo del directorio
chgrp -R www-data /var/www/html
Visualización del contenido de archivos
Existen varios comandos para examinar el contenido de archivos de texto:
cat: Muestra el contenido completo del archivo estándar de salida.less: Un visor interactivo que permite desplazarse hacia adelante y hacia atrás. Es muy eficiente para archivos grandes.head: Muestra las primeras líneas de un archivo (por defecto, 10).tail: Muestra las últimas líneas de un archivo (por defecto, 10). Útil con la opción-fpara seguir nuevas líneas en un archivo de registro en tiempo real.
# Mostrar el contenido de un archivo de configuración
cat /etc/hostname
# Navegar por un archivo largo de forma interactiva
less /var/log/syslog
# Mostrar las primeras 15 líneas de un archivo de datos
head -n 15 datos.csv
# Monitorizar nuevas entradas en un log
tail -f /var/log/auth.log
Enlaces: Duros y Simbólicos
Linux permite crear múltiples nombres para el mismo archivo mediante enlaces.
- Enlace duro (Hard Link): Es un nombre de archivo que apunta directamente al mismo nodo de información (inode) que el archivo original. Ambos nombres son equivalentes. Si se elimina el archivo original, el enlace duro sigue funcionando. No puede enlazar directorios ni cruzar sistemas de archivos.
- Enlace simbólico (Symbolic Link o symlink): Es un archivo especial que contiene una ruta hacia otro archivo o directorio (el objetivo). Es similar a un atajo. Si se elimina el objetivo, el enlace simbólico queda roto.
Creación con el comando ln:
# Crear un enlace duro 'archivo_b' que apunta a 'archivo_a'
ln archivo_a archivo_b
# Crear un enlace simbólico 'acceso_rapido' que apunta a '/ruta/larga/al/archivo'
ln -s /ruta/larga/al/archivo acceso_rapido
Verificación con ls -li:
# El número de inode (primera columna) será idéntico para archivo_a y archivo_b (enlace duro).
# El enlace simbólico 'acceso_rapido' tendrá un inode diferente y su tipo será 'l'.
Propiedades importantes:
- Eliminar el archivo original (
archivo_a) no afecta al enlace duro (archivo_b), pero rompe el enlace simbólico (acceso_rapido). - Los enlaces duros comparten el mismo contenido de datos. Los cambios realizados a través de uno se reflejan en el otro.