Una introducción al comando diff

El comando diff del paquete diffutils compara archivos línea por línea. Es muy útil cuando desea verificar si ha habido cambios recientes en un archivo desde la última copia de seguridad y cuáles son. Un estado de salida de 0 significa que no se encontraron diferencias, 1 significa que se encontraron algunas diferencias, y 2 significa problema. Y por supuesto, si hay cambios, diff te los mostrará. Pero veamos algunos ejemplos.

Ejemplo 1: Ambos archivos tienen el mismo contenido

Alice y Bob están preparando una parrillada y publicaron sus menús. Para decidir qué menú disfrutaría más, podría comparar los menús de la siguiente manera:

$ diff menu1 menu2
$ echo $?
0
$ cat menu{1,2}
# The menu
* Spare Ribs
* Brisket
* Pulled Pork
# The menu
* Spare Ribs
* Brisket
* Pulled Pork

Mira, ambos sirven costillas, pechuga y cerdo desmenuzado. No hay diferencia entre los dos archivos. Tal vez Alice y Bob deberían unir fuerzas para hacer una barbacoa realmente grande.

Cuando Eve se enteró de que Alice y Bob estaban organizando fiestas, se puso celosa y decidió organizar una barbacoa también. Su menú viene con el archivo. menu3. Bueno, veamos cuáles son las diferencias entre su menú y el de Alice y Bob.

Ejemplo 2: Ahora hay bebidas involucradas

$ diff menu1 menu3
4a5,8
> 
> # Drinks
> * Soda
> * Beer
$ echo $?
1
$

Ahora hay diferencias. Y, con la salida en la primera línea, diff nos dice qué agregar (a) a menu1 para que tenga el mismo contenido que menu3. Entonces, 4a5,8 significa que necesita agregar algunas líneas después de la línea 4 en menu1 por lo que parece líneas 5-8 en menu3.

Al cambiar la posición de los archivos, la salida es diferente:

$ diff menu3 menu1
5,8d4
< 
< # Drinks
< * Soda
< * Beer

Ahora, diff nos dice que las líneas 5-8 en menu3 debe eliminarse (d) para que el archivo sea igual que menu1.

Ejemplo 3: Cuando hay algo que cambiar

edité menu1 y menu2 de nuevo para verse así:

# The menu
* Spare Ribs
* Brisket
* Pulled Pork

# The menu
* Spare Ribs
* Pulled Pork
* Pulled Pork

Esta vez, diff nos mostrará qué línea necesita ser modificada (c) para que los dos archivos se vean iguales:

$ diff menu1 menu2
3c3
< * Brisket
---
> * Pulled Pork

Para Conclusión

el diff El comando es una herramienta fácil y flexible de usar para comparar archivos línea por línea. Echa un vistazo a diff(1) para saber qué más se puede hacer con diff.

Artículos de interés

Subir