Compartido

VPS

Dedicado

WP Profesional

WP Profesional Plus

La herramienta «diff» calcula las diferencias entre dos archivos de texto. Esa diferencia se llama parche. Puedes aplicar un parche a otro archivo usando la herramienta «patch».

Diff y patch están pensados para ser usados en archivos de texto. Los archivos que son binarios o manipulados por aplicaciones creadas al efecto, como los archivos .doc, .pdf, .xlsx o .wav, no funcionan bien con diff y patch.

¿Por qué usar diff y patch?

Razón 1: diff puede ser útil por sí mismo para ver lo que ha cambiado entre archivos, incluso si nunca usas patch.

Razón 2: a veces puedes conseguir parches de terceros y aplicarlos a tus archivos. Esto puede ser beneficioso en los casos en que los archivos que se parchean son grandes, pero el número de cambios es relativamente pequeño: transferir un archivo de parche es más eficiente que transferir el archivo completo.

Razón 3: Puede aplicar parches a archivos que no coinciden perfectamente con el archivo original utilizado en diff.
Por ejemplo, si utiliza un CMS con un archivo de configuración, y realiza modificaciones locales en ese archivo de configuración, quiere preservar esos cambios locales cuando actualice su CMS. Copiar la nueva configuración del proveedor sobre su versión perderá sus cambios. Sin embargo, en muchos casos, usted puede utilizar con seguridad el parche para aplicar los cambios del proveedor de la versión más reciente sin perder sus propios cambios.

¿Qué es diff?

diff es una forma de comparar archivos para las diferencias (de ahí el nombre «diff») desde la línea de comandos. Por ejemplo, si tienes un archivo original, luego haces algunos cambios y lo guardas con otro nombre, podrías comparar los dos usando diff.

usando la imagen de diff

Sintaxis de diff

diff se usa en la línea de comandos. La sintaxis básica de diff tiene el siguiente aspecto:

diff 

Este comando establece la estructura básica para comparar un archivo con otro. También hay opciones para añadir más funcionalidad a un comando.

Sintaxis básica (sin opciones)

Sustituye y por los nombres reales de los archivos. Asegúrese de incluir las extensiones de los archivos con los nombres de los mismos. Un comando diff básico sin opciones puede ser algo así:

diff file1.html file2.html

En este ejemplo, el comando compararía el archivo1.html y el archivo2.html y emitiría las diferencias en la línea de comandos.

Sintaxis de diff (con opciones)

Las opciones de diff añaden más funcionalidad a los comandos. Sin embargo, las opciones cambiarán un poco la sintaxis del comando.

Las opciones de diff van entre diff y el primer nombre de archivo:

diff -y file1.html file2.html

También puede combinar múltiples opciones en un comando. Hazlo añadiendo todas las letras de las opciones pertinentes después del guión (-). Acabará pareciendo algo así:

diff -uy file1.html file2.html

También puedes ver una variación que da a cada opción su propio guión (-). Ambos métodos de añadir múltiples opciones son válidos

diff -u -y file1.html file2.html

Vea a continuación una lista de opciones de uso común:

Descripción
-N Ignora los archivos ausentes
-r Ejecuta recursivamente diff a través de un directorio. Se utiliza para comparar varios archivos a la vez. Nota: no es lo mismo que -R, que es una opción de parche
-u Muestra la salida en un formato más fácil de leer. Esto puede eliminar alguna información, como las líneas de contexto.
-y Forza la salida para mostrar las diferencias una al lado de la otra.

Para más opciones, vea esta lista de opciones de diff de GNU.

Salida de diff

Cuando se ejecuta un comando diff, la salida básica será similar a esta:

El uso de la opción -y cambiará la forma en que se muestra la salida

11c11< this is text from the original file---> this is the same line from the second, changed file

Sólo se mostrarán los cambios en la salida, por lo que no tiene que escudriñar los dos archivos. En su lugar, diff compara y saca los cambios para que los veas.

Consejo

Los caracteres «>» y «<» en la salida de diff apuntan a la dirección del archivo en el que se encuentra el contenido. Así, para el comando «diff archivo1 archivo2», un «<» se refiere a las líneas del archivo1 y «>» se refiere a las líneas del archivo2.

imagen de consejo de contenido

Cómo leer la salida de diff

Aquí tienes una breve guía sobre cómo leer la salida de diff.

La primera línea de salida

La primera línea de la salida indica los números de línea que contienen diferencias y el tipo de cambios que se han realizado.

imagen de salida de diferencias

Si dos números están separados por una coma, significa que hay cambios desde el primer número de línea hasta el segundo. En la imagen de ejemplo anterior, 11,12 indicaría que hay cambios en las líneas 11 – 12.

La «c» que separa los números de línea en el ejemplo anterior indica el tipo de cambio que se ha producido. Hay diferentes letras que indican diferentes tipos de cambios:

.

Se ha eliminado contenido

Letra Significado
Contento fue reemplazado
a Se ha añadido o anexado contenido
d

Cuando se utiliza el parche, que se explicará en la sección ¿Qué es el parche? estas letras serán importantes.

El resto de la salida

El resto de la salida se refiere a las diferencias reales entre archivos.

Las líneas modificadas aparecerán junto a los corchetes angulares < o >. Tres guiones (—) indican que cambia el final de la línea del primer archivo y el comienzo de la del siguiente. El aspecto será el siguiente:

< text from file one---> text from file two

Ahora que tienes una comprensión básica de diff, es hora de pasar a patch.

¿Qué es patch?

atch es un comando que toma la salida del diff y la pone en un archivo. Luego, puede tomar la salida archivada y sobrescribir otro archivo con los cambios. Por ejemplo, un uso común es utilizar el parche para transferir los cambios del archivo modificado al archivo original, haciéndolos así idénticos. Aunque esto también se puede lograr copiando/pegando el archivo actualizado en el archivo original, el parche es mucho más rápido y eficiente.

Cómo usar diff y patch juntos

diff funciona catalogando los cambios entre los dos archivos o carpetas. Patch puede tomar esos cambios, ponerlos en un archivo y actualizar las versiones anteriores con él.

Opciones de patch

El comando patch también tiene su propio conjunto de opciones para añadir funcionalidad. Encuentre una lista de las opciones más utilizadas a continuación:

-b Crea una copia de seguridad del archivo original
-i Forza al comando a leer el parche desde el archivo .patch en lugar de desde la entrada estándar -p Indica al comando que elimine # número de barras del camino del archivo al nombre del archivo. Verás que en la mayoría de nuestros ejemplos, usamos -p0 para que no se eliminen las barras
-R Revisa el parche anterior
-s Ejecuta el comando en silencio. Sólo mostrará el proceso si hay errores

Para más opciones, vea esta lista de opciones de parche de GNU.

Crear un parche

Crear un archivo de parche es el primer paso para usar patch y diff juntos. El archivo de parche se puede utilizar para añadir cambios a otros archivos, por lo que es necesario para comandos como Sobrescribir el archivo original con los cambios.

Para crear un archivo de parche, introduzca el siguiente comando en la línea de comandos:

diff -u file1.html file2.html > patchfile.patch

En el ejemplo anterior, la salida de diff se guardará en un archivo llamado patchfile.patch. Cuando ejecute el comando, asegúrese de cambiar archivo1.html y archivo2.html por los nombres reales de los archivos.

Sobreescribir archivos con cambios

Una vez creado el archivo de parche, puede utilizarlo para copiar los cambios en otro archivo. Por ejemplo, puede querer sobrescribir el archivo1 con los cambios del archivo2 actualizado. Para ello, podría utilizar una sintaxis como la siguiente:

patch file1.html patchfile.patch

Reemplace el archivo1.html con su archivo original. Esto sobrescribiría el contenido antiguo de archivo1.html con el contenido cambiado de archivo2.html.

Cómo revertir un parche

Si quieres revertir el archivo a su versión anterior antes de parchearlo, puedes hacerlo ejecutando este comando:

patch -p0 -R -i patchfile.patch

La línea de comandos le pedirá que introduzca el nombre del archivo que desea revertir. Una vez introducido el nombre del archivo, comenzará el proceso de reversión. Si tiene éxito, el archivo será revertido a su estado anterior.

Patch Directorios

Usar diff y patch en directorios completos es un proceso similar al de usarlo en archivos individuales.

El primer paso es crear un archivo de parche utilizando el comando:

diff -ruN folder1/ folder2/ > patchfile.patch

A continuación, se emitiría el comando para parchear la carpeta original, que en este caso es la carpeta1:

patch -s -p0 < patchfile.patch

Si tiene éxito, su directorio original debería estar ahora actualizado para coincidir con la segunda carpeta actualizada.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *