Comando Diff en Linux con ejemplos
Cuando se trata de la comparación de archivos, se utiliza principalmente software basado en GUI. Si eres un usuario de Linux, creo que deberías saber cómo comparar dos archivos a través de la línea de comandos, ya que definitivamente es un método rápido una vez que estás acostumbrado.
En este tutorial, aprenderemos cómo usar el comando diff a través de algunos ejemplos prácticos.
Comando diff de Linux
Entendamos el comando diff de Linux a través de algunos ejemplos prácticos.
Supongamos que tenemos estos dos archivos (archivo1 y archivo2):
$ cat file1 Hi, Hello, How are you? I am fine, Thank you.
$ cat file2 Hello, Hi, How are you? I am fine.
Puede ver que ambos archivos tienen algunas diferencias menores. Ahora, veamos cómo se puede usar el comando diff para resaltar estas diferencias.
Así es como se ejecuta el comando diff:
$ diff file1 file2 1d0 < Hi, 2a2 > Hi, 4,5c4 < I am fine, < Thank you. --- > I am fine.
Entonces puede ver que el comando diff se proporcionó tanto con los nombres de archivo como con los argumentos de la línea de comando y produjo las diferencias en la salida. El resultado de ninguna manera es fácilmente comprensible. La razón es que fue diseñado para ser utilizado por computadoras y no por humanos. No obstante, decodifiquemos la salida pieza por pieza:
NOTA – Los archivos file1 y file2 se direccionarán como archivo antiguo y archivo nuevo en el siguiente texto.
1d0 < Hi,
Aquí, la línea 1d0 significa que la 1ª línea del archivo antiguo debe eliminarse (d) para sincronizar los dos archivos que comienzan en la línea 0. La línea que se eliminará en el archivo antiguo se menciona justo debajo con una marca <.
2a2 > Hi,
Aquí, la línea 2a2 significa que la segunda línea del nuevo archivo debe agregarse después de la segunda línea del archivo antiguo. La línea que se agregará se muestra en la siguiente línea de la salida con la marca>.
4,5c4 < I am fine, < Thank you. --- > I am fine.
Aquí, la línea 4,5c4 significa que los números de línea que van del 4 al 5 en el archivo anterior ahora se han cambiado y deben reemplazarse con la cuarta línea del nuevo archivo. Las líneas que se agregarán y eliminarán están marcadas con> y Entonces, para concluir, Además de los archivos, el comando diff también se puede utilizar para comparar dos directorios. Aprendamos esto con un ejemplo. Aquí está el contenido de un directorio llamado ‘new_dir’: y aquí está el contenido de un directorio llamado ‘old_dir’: Ahora, aquí está la salida cuando se ejecutó el comando diff: Entonces puede ver que cuando se ejecuta el comando diff para comparar estos dos directorios, muestra fácilmente los archivos que faltan en los directorios. Estas son algunas de las opciones de línea de comando más utilizadas: Si dos archivos contienen el mismo texto pero en casos diferentes, el comando diff aún lo informa como una diferencia por defecto. Por ejemplo : Entonces puede ver que el comando diff reportó la diferencia de mayúsculas y minúsculas en la salida. Para salirse con la suya con este comportamiento predeterminado, use la opción -i. Aquí hay un ejemplo : Entonces puede ver que no se produjo ninguna salida, que es el comportamiento predeterminado cuando ambos archivos son iguales. Hacia el final del ejemplo 1, vimos que diff no informa nada si los archivos son iguales. Aunque este comportamiento predeterminado está bien, aún podría confundir a muchos, especialmente a los novatos. Por lo tanto, si desea que el comando diff informe explícitamente que los archivos son iguales, use la opción de línea de comando -s. Aquí hay un ejemplo : Entonces, puede ver que agregué la opción -s en el comando que usamos en el último ejemplo y esta vez el comando diff informó explícitamente que ambos archivos son idénticos. Otro caso de uso común es la cantidad variable de espacios para los cuales el comando diff informa que los archivos son diferentes. Aquí hay un ejemplo : Observe que la única diferencia entre los archivos de remolque es el espacio adicional entre las palabras «eres» y «tú» en el archivo2. Ahora, cuando se usa el comando diff para comparar estos dos archivos, aquí está el resultado: Entonces puede ver que el comando diff informó la diferencia. Pero si desea que diff ignore estos espacios, use la opción -b: Entonces puede ver que debido a la opción -b, el comando diff informó que ambos archivos eran iguales. Consejo de comando: El siguiente comando mostrará todas las diferencias de archivos entre dos carpetas El comando diff proporciona muchas más opciones de línea de comandos. Léelo página man para la lista completa.
$ ls new_dir/
file file2 frnd frnd1.cpp log1.txt log3.txt log5.txt
file1 file name with spaces frnd1 frnd.cpp log2.txt log4.txt
$ ls orig_dir/
file1 file name with spaces frnd1 frnd.cpp log2.txt log4.txt test
file2 frnd frnd1.cpp log1.txt log3.txt log5.txt
$ diff new_dir/ orig_dir/
Only in new_dir/: file
Only in orig_dir/: test
1) Utilice -i para ignorar las diferencias entre mayúsculas y minúsculas
$ cat file1
HI
$ cat file2
hi
$ diff file1 file2
1c1
< HI --- > hi
$ diff -i file1 file2
$
2) Informe que los archivos son iguales usando la opción -s
$ diff -is file1 file2
Files file1 and file2 are identical
3) Utilice -b para ignorar espacios
$ cat file1
Hi, how are you?
$ cat file2
Hi, how are you?
$ diff file1 file2
1c1
< Hi, how are you?
---
> Hi, how are you?
$ diff -b file1 file2
$
diff -Naur old/ new/