LINUX

Comando Diff en Linux con ejemplos

comando diff

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,

  • El primer argumento del comando diff se considera archivo antiguo, mientras que el segundo argumento se convierte en archivo nuevo.
  • Expresiones como 1d0 2a2, 4,5c4 se pueden decodificar con la sintaxis [line number or range from old file][action][line number or range from new file]. Donde, ‘acción’ puede agregarse, eliminarse o cambiarse y reemplazarse.
  • La marca representa la línea que se agregará.

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’:

$ 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

y aquí está el contenido de un directorio llamado ‘old_dir’:

$ 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

Ahora, aquí está la salida cuando se ejecutó el comando diff:

$ diff new_dir/ orig_dir/
Only in new_dir/: file
Only in orig_dir/: test

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:

1) Utilice -i para ignorar las diferencias entre mayúsculas y minúsculas

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 :

$ cat file1
HI
$ cat file2
hi
$ diff file1 file2
1c1
< HI --- > hi

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 :

$ diff -i file1 file2
$

Entonces puede ver que no se produjo ninguna salida, que es el comportamiento predeterminado cuando ambos archivos son iguales.

2) Informe que los archivos son iguales usando la opción -s

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 :

$ diff -is file1 file2
Files file1 and file2 are identical

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.

3) Utilice -b para ignorar espacios

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 :

$ cat file1
Hi, how are you?

$ cat file2
Hi, how are  you?

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:

$ diff file1 file2
1c1
< Hi, how are you?

---

> Hi, how are  you?

Entonces puede ver que el comando diff informó la diferencia. Pero si desea que diff ignore estos espacios, use la opción -b:

$ diff -b file1 file2
$

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

diff -Naur old/ new/

El comando diff proporciona muchas más opciones de línea de comandos. Léelo página man para la lista completa.

Publicaciones relacionadas

Deja una respuesta

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

Botón volver arriba
Cerrar