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