Tutorial de Shell Scripting Parte 9

Tutorial de Shell Scripting Parte 9

Temario para este Tutorial

 

Parte 9: Comparación de Archivos

Introducción

En esta parte del tutorial, aprenderás a realizar comparaciones de archivos en Bash. Comparar archivos es fundamental cuando necesitas verificar su existencia, determinar si son idénticos o si tienen diferentes propiedades, como tamaño o permisos. Este conocimiento es esencial para trabajar con datos almacenados en el sistema de archivos en tus scripts.

Operadores de Comparación de Archivos

En Bash, hay varios operadores que te permiten verificar diferentes propiedades de los archivos. Aquí están los más importantes:

  • -e: Verifica si un archivo o directorio existe.
  • -f: Verifica si un archivo existe y es un archivo regular (no un directorio).
  • -d: Verifica si un directorio existe.
  • -r: Verifica si un archivo tiene permisos de lectura.
  • -w: Verifica si un archivo tiene permisos de escritura.
  • -x: Verifica si un archivo tiene permisos de ejecución.
  • -s: Verifica si un archivo no está vacío.
  • -nt: Verifica si un archivo es más reciente que otro.
  • -ot: Verifica si un archivo es más antiguo que otro.

Ejemplo: Verificar si un Archivo Existe

El siguiente script verifica si un archivo llamado archivo.txt existe en el directorio actual:


#!/bin/bash

archivo="archivo.txt"

if [ -e "$archivo" ]; then
    echo "El archivo $archivo existe."
else
    echo "El archivo $archivo no existe."
fi

En este ejemplo, el operador -e se utiliza para comprobar si el archivo existe. Si es así, se imprime un mensaje confirmándolo; de lo contrario, se muestra un mensaje alternativo.

Verificar si un Archivo es Regular

Si deseas asegurarte de que un archivo no solo exista, sino que sea un archivo regular (no un directorio), puedes usar el operador -f:


#!/bin/bash

archivo="archivo.txt"

if [ -f "$archivo" ]; then
    echo "$archivo es un archivo regular."
else
    echo "$archivo no es un archivo regular o no existe."
fi

Este script solo imprimirá que el archivo es regular si existe y no es un directorio.

Comparar Archivos para Ver cuál es más Reciente

En Bash, también puedes comparar dos archivos para ver cuál es más reciente usando el operador -nt (newer than) o cuál es más antiguo con el operador -ot (older than). Aquí tienes un ejemplo:


#!/bin/bash

archivo1="archivo1.txt"
archivo2="archivo2.txt"

if [ "$archivo1" -nt "$archivo2" ]; then
    echo "$archivo1 es más reciente que $archivo2"
elif [ "$archivo1" -ot "$archivo2" ]; then
    echo "$archivo1 es más antiguo que $archivo2"
else
    echo "$archivo1 y $archivo2 tienen la misma fecha de modificación"
fi

En este ejemplo, el script compara las fechas de modificación de los archivos archivo1.txt y archivo2.txt. Dependiendo de cuál sea más reciente o más antiguo, se imprime un mensaje diferente.

Comparar si dos Archivos son Iguales

Para comparar dos archivos y determinar si su contenido es exactamente igual, puedes usar el comando cmp o diff en tus scripts. Aquí te muestro cómo hacerlo:


#!/bin/bash

archivo1="archivo1.txt"
archivo2="archivo2.txt"

if cmp -s "$archivo1" "$archivo2"; then
    echo "Los archivos $archivo1 y $archivo2 son idénticos."
else
    echo "Los archivos $archivo1 y $archivo2 son diferentes."
fi

En este ejemplo, el comando cmp compara los dos archivos. Si son idénticos, se imprime un mensaje confirmando que son iguales; si no lo son, se muestra que son diferentes.

Verificar Permisos de un Archivo

Puedes verificar los permisos de un archivo para asegurarte de que tiene permisos de lectura, escritura o ejecución. Aquí tienes un ejemplo donde verificamos los permisos de un archivo:


#!/bin/bash

archivo="script.sh"

if [ -r "$archivo" ]; then
    echo "El archivo $archivo tiene permisos de lectura."
else
    echo "El archivo $archivo no tiene permisos de lectura."
fi

if [ -w "$archivo" ]; then
    echo "El archivo $archivo tiene permisos de escritura."
else
    echo "El archivo $archivo no tiene permisos de escritura."
fi

if [ -x "$archivo" ]; then
    echo "El archivo $archivo tiene permisos de ejecución."
else
    echo "El archivo $archivo no tiene permisos de ejecución."
fi

Este script comprueba los permisos de lectura, escritura y ejecución de un archivo llamado script.sh e imprime un mensaje correspondiente según los permisos que tenga.

Conclusión

¡Felicidades! Ahora sabes cómo realizar comparaciones de archivos en Bash. Este conocimiento te permitirá verificar la existencia de archivos, comparar fechas, tamaños y permisos, y asegurarte de que tus scripts funcionen correctamente con archivos en el sistema.

En el siguiente tema, crearemos nuestro segundo script, donde aplicaremos todo lo que hemos aprendido hasta ahora para resolver un problema práctico.

Próximos Pasos

En la Parte 10 del tutorial, desarrollaremos un Bash script que combinará todas las habilidades que has adquirido hasta ahora, desde la gestión de variables hasta la comparación de archivos.

Si te ha gustado este tutorial, ¡no dudes en compartirlo o dejar un comentario! Tu apoyo es muy valioso para seguir creando más contenido.