Cómo usar archivos Diff en Linux
Diff es una herramienta de línea de comandos para sistemas Unix que le 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, le mostramos cómo puede usar diff
para comparar fácilmente archivos en Linux.
Comparando archivos con diff
- Abra una ventana de terminal.
- Escriba
diff
y las rutas a dos archivos que le gustaría comparar. En este caso, estoy comparando dos pequeños programas C en mi escritorio usando el siguiente comando:
diff ~/Desktop/hello.c ~/Desktop/hello-1.c
- Presione Enterpara enviar el comando. La pantalla resultante le mostrará todas las diferentes líneas entre los archivos. Los números de línea comparados se mostrarán como «1c1», lo que significa que se cambió la primera línea y se encontraron las siguientes diferencias.
- Para ver una vista de lado a lado de los archivos y sus diferencias, use la
-y
marca después dediff
. Por ejemplo:
diff -y ~/Desktop/hello.c ~/Desktop/hello-1.c
Cualquier línea con un símbolo de tubería ( |
) es una línea con una diferencia. Solo asegúrese de expandir la ventana de su terminal primero, o puede tener dificultades para ver la pantalla.
Comparando archivos con Meld
diff
También se puede acceder a la funcionalidad de Meld , una GUI para diff
. Teniendo en cuenta que la interfaz de usuario de diff puede ser difícil de manejar, Meld es una herramienta útil.
- Instale Meld desde la línea de comando abriendo la terminal y escribiendo:
sudo apt -y install meld
o
sudo dnf -y install meld
para distribuciones basadas en RPM.
Esto inicializará el administrador de paquetes apt y comenzará a instalar Meld. Tenga en cuenta que la -y
bandera dirá automáticamente «sí» a cualquier indicación; elimínelo si prefiere confirmar esas indicaciones manualmente.
- Ingrese su contraseña de administrador cuando se le solicite. Cuando vuelva a ver el símbolo del sistema, la instalación habrá finalizado y podrá abrir Meld.
- Cuando abra Meld, verá tres opciones: comparación de archivos, comparación de directorios y vista de control de versiones. Haga clic en «Archivo».
- Aparecerán dos menús desplegables, ambos leyendo «(Ninguno)». Haga clic en uno para seleccionar un archivo para comparar.
- Haga clic en el otro menú desplegable para seleccionar un segundo archivo para comparar.
- Haga clic en el botón «Comparar».
- La siguiente ventana resume las diferencias encontradas entre dos archivos. Los caracteres rojos son diferencias y el fondo azul indica que hay una diferencia en esa línea. Un fondo verde indica que existe una línea en un archivo pero no en el otro.
- Para navegar entre las diferencias, haga clic en los botones arriba y abajo en la barra de menú. También puede hacer clic directamente en el documento con el mouse.
Manipulación de archivos en Meld
Además de hacer comparaciones, Meld te permite cambiar los archivos comparados. Meld continuará analizando el documento en busca de cambios a medida que modifique cualquiera de las versiones, y puede presionar Ctrl+ Zen cualquier momento para deshacer los cambios.
- Para copiar cambios de un archivo a otro, haga clic en las pequeñas flechas negras entre los cambios. Al hacer clic en la flecha del lado izquierdo, por ejemplo, se usará la línea del documento de la izquierda para sobrescribir el documento de la derecha.
- Las líneas también se pueden insertar en documentos sin sobrescribir. Si mantiene presionada la Ctrltecla, verá que las flechas del último paso se convierten en signos más. Haga clic en el icono para abrir un pequeño cuadro de diálogo donde puede elegir dónde insertar una nueva línea.
- Finalmente, escriba directamente en su documento. Simplemente inserte el cursor como lo haría normalmente y comience a escribir.
- Una vez que haya terminado de hacer cambios, haga clic en el botón «Guardar» para guardar sus archivos.
Creación de archivos diff usando Meld y diff
Además de mostrar las diferencias entre dos archivos, también puede usar Meld para crear «archivos de diferencias». 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 desea distribuir rápidamente actualizaciones de código sin volver a compartir todo el archivo fuente.
- Abra los dos archivos que desea comparar.
- Haga clic en el menú Opciones en la esquina superior derecha de la ventana.
- Seleccione el submenú «Comparación».
- Haga clic en la subopción «Formatear como parche».
- Esto abrirá una pequeña ventana donde Meld imprimirá el archivo de diferencias completo entre sus dos archivos. En este punto, puede copiar este texto en su portapapeles o guardarlo en un archivo. Para hacer esto último, haga clic en el botón «Guardar parche».
Si bien la creación de archivos diff dentro de Meld es simple y directa, hay casos en los que puede que no sea posible acceder a una GUI mientras se edita el código. Para eso, también puede usar el diff
programa para generar un archivo diff.
- Abra una terminal y verifique si hay diferencias entre los dos archivos:
diff hello.c hello-1.c
- Cree un archivo diff simple usando la
-c
bandera:
diff -c hello.c hello-1.c > hello.diff
- Opcionalmente, use la
-u
opción que combina las dos secuencias de texto en un solo bloque de diferencias unificado. Esto puede ser útil si está cambiando mucho código y desea ahorrar espacio en disco:
diff -u hello.c hello-1.c > hello.diff
Uso de archivos diff para parchear el código fuente
Como se discutió anteriormente, un archivo diff le permite crear un resumen de los cambios en su código fuente que se puede compartir fácilmente. Sin embargo, diff por sí mismo no puede aplicarlos a los archivos existentes. Para ello, utilice el programa complementario de diff, patch
.
- Determine el código fuente original que el archivo diff está tratando de cambiar:
cat hello.diff | sed 1q
- Cree una copia de seguridad de su código fuente original:
cp hello.c hello.c.old
- Ejecute el programa de parche con el archivo original en el primer argumento y el archivo diff en el segundo:
patch hello.c hello.diff
Es importante tener en cuenta que un archivo diff también puede contener cambios que abarquen varios archivos. Aplique esto colocando todos los archivos necesarios para actualizar en un solo directorio y ejecutando patch < multi-file.diff
.
- Compruebe si el programa de parches actualizó con éxito su archivo fuente comparándolo con su copia de seguridad:
diff -y hello.c hello.c.old
FYI: Git es un poderoso programa de control de versiones multiplataforma. Aprenda cómo puede usarlo para administrar sus repositorios de código fuente en Linux.
Preguntas frecuentes
¿Es posible parchear un archivo varias veces?
Sí. Sin embargo, es importante tener en cuenta que el valor del número de línea dentro de un archivo diff es estático. Por ejemplo, aplicar una diferencia que agrega cinco líneas de código en la línea 1 ajustará todo el archivo en cinco líneas. Si bien las herramientas modernas pueden compensar los cambios de diferencias individuales, aplicar más de una puede crear conflictos de código innecesarios.
¿Es un archivo diff similar a un parche de Git?
Sí. Tanto diff como Git usan un tipo de formato similar para sus parches de código. Como resultado, puede intercambiar las dos utilidades al aplicar actualizaciones a su código fuente. Por ejemplo, correr git apply hello.diff
es equivalente a correr patch < hello.diff
.
¿Puedes usar Meld con un programa de control de versiones como Git?
Sí. Una de las funciones más potentes de Meld es que puede funcionar de forma transparente con cualquier programa de control de versiones. Esto le brinda la capacidad de interactuar fácilmente con sus repositorios fuera de la interfaz de la terminal.
Para hacer esto, presione Ctrl+ N, luego haga clic en el botón «Ver control de versión». A continuación, haga clic en el cuadro desplegable debajo de él y seleccione «Otro». Esto abrirá una pequeña ventana donde puede ver y cargar su repositorio Git.
Crédito de la imagen: Unsplash . Todas las capturas de pantalla por Ramces Red.
Deja una respuesta