GNU/Linux >> Tutoriales Linux >  >> Linux

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 te acostumbras.

En este tutorial, aprenderemos a usar el comando diff a través de algunos ejemplos prácticos.

Comando de diferencias de Linux

Comprendamos 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 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 los archivos como con los argumentos de la línea de comandos y produjo las diferencias en la salida. La salida 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 archivo1 y archivo2 se tratarán como archivo antiguo y archivo nuevo en el siguiente texto.

1d0
< Hi,

Aquí, la línea 1d0 significa que la primera línea del archivo anterior debe eliminarse (d) para sincronizar ambos archivos que comienzan en la línea 0. La línea que se eliminará en el archivo anterior se menciona justo debajo con

2a2
> Hi,

Aquí, la línea 2a2 significa que la segunda línea del archivo nuevo debe agregarse después de la segunda línea del archivo anterior. 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 cambiaron y deben reemplazarse con la cuarta línea del archivo nuevo. 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 un archivo antiguo, mientras que el segundo argumento se convierte en un archivo nuevo.
  • Expresiones como 1d0 2a2, 4,5c4 se pueden decodificar con la sintaxis [número de línea o rango del archivo antiguo][acción][número de línea o rango del archivo nuevo] . Donde, 'acción' se puede agregar, eliminar o cambiar para reemplazar.
  • La marca representa la línea que se agregará.

Además de los archivos, el comando diff también se puede usar para comparar dos directorios. Aprendamos esto a través de 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án los contenidos 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á el resultado 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 comandos más utilizadas:

1) Use -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 informó 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 ningún resultado, 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. Entonces, 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) Use -b para ignorar espacios

Otro caso de uso común es la cantidad variable de espacios para los que 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 dos archivos es el espacio extra entre las palabras 'son' y 'usted' en el archivo2. Ahora, cuando se usa el comando diff para comparar estos dos archivos, este es 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 son 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. Lea su página man para ver la lista completa.


Linux
  1. Ordenar comando en Linux con ejemplos

  2. Comando chattr en Linux con ejemplos

  3. Comando JQ en Linux con ejemplos

  4. Ejemplos de comandos ln en Linux

  5. Ejemplos de comandos de archivo en Linux

Uso de Cat Command en Linux con ejemplos

Comando WC de Linux con ejemplos

Uso del comando Linux mv con ejemplos

Comando de montaje de Linux con ejemplos

Comando gawk de Linux con ejemplos

Comando make de Linux con ejemplos