Diff es una herramienta de línea de comandos para sistemas Unix que te permite comparar dos archivos o directorios y ver las diferencias entre ellos.
Es ideal para comparar versiones antiguas y nuevas de archivos para ver qué ha cambiado. En este artículo, te mostramos cómo usar diff para comparar archivos fácilmente en Linux.
CONSEJO PREVIO: Aprende cómo copiar y pegar texto, archivos y carpetas en la terminal de Linux.
Comparando archivos con diff
1️⃣ Abre una ventana de terminal.
2️⃣ Escribe diff seguido de las rutas de los dos archivos que deseas comparar. En este caso, estoy comparando dos programas en C pequeños en mi escritorio usando el siguiente comando:
diff ~/Desktop/hello.c ~/Desktop/hello-1.c
3️⃣ Presiona Enter para enviar el comando. La salida mostrará todas las líneas diferentes entre los archivos. Los números de línea comparados aparecerán como “1c1”, lo que significa que la primera línea fue cambiada y se encontraron diferencias en las siguientes líneas.
4️⃣ Para ver una vista lado a lado de los archivos y sus diferencias, usa la opción -y después de diff. Por ejemplo:
diff -y ~/Desktop/hello.c ~/Desktop/hello-1.c
Cualquier línea con un símbolo de barra (|) indica que esa línea tiene una diferencia. Asegúrate de expandir la ventana de terminal para ver el resultado correctamente.
Consejo útil: aprende cómo manipular la salida de un programa usando pipes de Bash junto con la poderosa utilidad sed.
Comparando archivos con Meld ️
La funcionalidad de diff también se puede acceder a través de Meld, una interfaz gráfica de usuario (GUI) para diff. Dado que la interfaz de usuario de diff puede ser difícil de manejar, Meld es una herramienta útil.
1️⃣ Instalar Meld desde la línea de comandos abriendo una terminal y escribiendo:
sudo apt -y install meld
o
sudo dnf -y install meld
Esto inicializará el administrador de paquetes apt e instalará Meld. Ten en cuenta que la opción -y aceptará automáticamente cualquier solicitud; elimínala si prefieres confirmar manualmente.
2️⃣ Introduce tu contraseña de administrador cuando se te solicite. Cuando veas el prompt de comando nuevamente, la instalación habrá finalizado y podrás abrir Meld.
3️⃣ Al abrir Meld, verás tres opciones: Comparación de archivos, Comparación de directorios y Vista de control de versiones. Haz clic en “File” (Archivo).
4️⃣ Aparecerán dos menús desplegables, ambos leyendo “(None)”. Haz clic en uno para seleccionar un archivo para comparar.
5️⃣Haz clic en el otro menú desplegable para seleccionar un segundo archivo para comparar.
6️⃣ Haz clic en el botón “Compare” (Comparar).
La siguiente ventana resumirá cualquier diferencia encontrada entre los dos archivos. Los caracteres en rojo son diferencias y el fondo azul indica que hay una diferencia en esa línea. Un fondo verde indica que una línea existe en un archivo pero no en el otro.
7️⃣ Para navegar entre las diferencias, haz clic en los botones de arriba y abajo en la barra de menú. También puedes hacer clic directamente en el documento con el mouse.
Consejo útil: si prefieres usar herramientas en línea para comparar archivos, estas son algunas de las mejores herramientas de comparación de diffs en línea.
Manipulando archivos en Meld ️
Además de realizar comparaciones, Meld te permite cambiar los archivos comparados. Meld continuará analizando el documento para detectar cambios mientras modificas cualquiera de las versiones, y puedes presionar Ctrl + Z en cualquier momento para deshacer los cambios.
Para copiar cambios de un archivo a otro, haz clic en las pequeñas flechas negras entre los cambios. Hacer clic en la flecha en el lado izquierdo, por ejemplo, utilizará la línea del archivo izquierdo para sobrescribir el archivo derecho.
Las líneas también pueden ser insertadas en los documentos sin sobrescribir. Si mantienes presionada la tecla Ctrl, verás que las flechas de la última acción se convierten en signos de más.
Haz clic en el icono para abrir un pequeño cuadro de diálogo donde podrás elegir dónde insertar una nueva línea.
Finalmente, escribe directamente en tu documento. Simplemente inserta el cursor como lo harías normalmente y comienza a escribir.
Cuando termines de hacer cambios, haz clic en el botón “Save” (Guardar) para guardar tus archivos.
Creando archivos diff con Meld y diff
Además de mostrar las diferencias entre dos archivos, también puedes usar Meld para crear archivos diff. Estos son pequeños fragmentos de texto que contienen instrucciones sobre cómo aplicar cambios de una versión de archivo a otra.
Esto es útil si deseas distribuir rápidamente actualizaciones de código sin tener que compartir todo el archivo fuente.
1️⃣ Abre los dos archivos que deseas comparar.
2️⃣ Haz clic en el menú Options (Opciones) en la esquina superior derecha de la ventana.
3️⃣ Selecciona el submenú “Comparison” (Comparación).
4️⃣ Haz clic en la subopción “Format as a Patch” (Formatear como un parche).
Esto abrirá una pequeña ventana donde Meld imprimirá todo el archivo diff entre tus dos archivos.
En este punto, puedes copiar este texto al portapapeles o guardarlo en un archivo. Para hacer esto último, haz clic en el botón “Save Patch” (Guardar parche).
En algunos casos, puede no ser posible acceder a una interfaz gráfica mientras editas código. Para ello, también puedes usar el programa diff para generar un archivo diff.
1️⃣ Abre una terminal y verifica si hay diferencias entre los dos archivos:
diff hello.c hello-1.c
2️⃣ Crea un archivo diff simple usando la opción -c:
diff -c hello.c hello-1.c > hello.diff
3️⃣ Opcionalmente, usa la opción -u que combina los dos flujos de texto en un solo bloque de diff unificado. Esto puede ser útil si estás cambiando mucho código y deseas ahorrar espacio en disco:
diff -u hello.c hello-1.c > hello.diff
Usando archivos diff para parchar código fuente ️
Como se mencionó anteriormente, un archivo diff permite crear un resumen fácilmente compartible de los cambios en tu código fuente.
Sin embargo, diff no puede aplicar estos cambios a los archivos existentes. Para ello, usa el programa patch, que acompaña a diff.
1️⃣ Determina el código fuente original que el archivo diff intenta cambiar:
cat hello.diff | sed 1q
2️⃣ Crea una copia de seguridad de tu código fuente original:
cp hello.c hello.c.old
3️⃣ Ejecuta el programa patch con el archivo original como primer argumento y el archivo diff como segundo:
patch hello.c hello.diff
4️⃣ Aplica esto colocando todos los archivos necesarios para la actualización en un solo directorio y ejecutando:
patch < multi-file.diff
5️⃣Verifica si el programa patch actualizó correctamente tu archivo fuente comparándolo con tu copia de seguridad:
diff -y hello.c hello.c.old
