Comandos de Linux

Ejemplos de comandos diff en Linux

Ejemplos de comandos diff en Linux
El comando diff es un comando de análisis o informativo que imprime las diferencias entre archivos, analizándolos línea por línea o directorios de manera recursiva mientras informa al usuario qué cambios son necesarios para hacer que los archivos sean iguales, este punto es importante para comprender las salidas de diff. Este tutorial se centra en el comando diff.

Antes de comenzar, cree dos archivos usando cualquier editor de texto (nano se usa en este tutorial) con el mismo contenido:

# nano diffsample1

Pasta interior:

 LinuxHint publica el mejor contenido para ti 

prensa CONTROL+X e Y para guardar y salir.

Cree un segundo archivo llamado diffsample2 con el mismo contenido:

# nano diffsample2

Nota: preste atención a los espacios y pestañas, los archivos deben ser 100% iguales.

prensa CONTROL+X e Y para guardar y salir.

# diff diffsample1 diffsample2

Como puede ver, no hay salida, no es necesario hacer nada para que los archivos sean iguales porque ya son iguales.

Ahora editemos el archivo diffsample2 para hacer algunos cambios:

# nano diffsample2

Luego, reemplacemos la palabra "contenido" por "sugerencias":

prensa CONTROL+X y Y para guardar y salir.

Ahora ejecuta:

# diff diffsample1 diffsample2

Veamos el resultado:

El resultado anterior, "3c3" significa "La línea 3 del primer archivo de debe reemplazarse por la línea 3 del segundo archivo". La parte amigable del resultado es que nos muestra qué texto se debe cambiar ("contenido para ti" por "consejos para ti")

Esto nos muestra que la referencia para el comando diff no es el primer archivo sino el segundo, es por eso que la tercera línea del primer archivo (las primeras 3) debe cambiarse (C) como la tercera línea del segundo archivo (las segundas 3).

El comando diff puede mostrar 3 caracteres:

C: este personaje instruye a un Cambio Debe ser hecho.
a: este personaje instruye que algo debe ser Adicional.
D: este personaje instruye que algo debe ser Eliminado.

Los primeros números antes de un carácter pertenecen al primer archivo, mientras que los números después de los caracteres pertenecen al segundo archivo.

El símbolo < belongs to the first file and the symbol > al segundo archivo que se utiliza como referencia.

Invirtamos el orden de los archivos, en lugar de ejecutar

# diff diffsample1 diffsample2

correr:

# diff diffsample2 diffsample1

Puede ver cómo se invirtió el orden y ahora el archivo diffsample1 se usa como referencia, y nos indica que cambiemos "tips for you" por "content for you", este era el resultado anterior:

Ahora editemos el archivo diffsample1 así:

Elimine todas las líneas, excepto la primera línea del archivo diffsample1. Entonces corre:

# diff diffsample2 diffsample1

Como puede ver, dado que usamos el archivo diffsample1 como referencia, para que el archivo diffsample2 sea exactamente igual, debemos eliminar (D) líneas dos y tres (2,3) como en el primer archivo y primeras líneas (1) será igual.

Ahora invirtamos el orden y en lugar de ejecutar "# diff diffsample2 diffsample1 ” correr:

# diff diffsample1 diffsample2

Como puede ver, mientras que el ejemplo anterior nos indicó que elimináramos, este nos indica que agreguemos (a) líneas 2 y 3 después del primer archivo primera línea (1).

Ahora trabajemos en la propiedad sensible a mayúsculas y minúsculas de este programa.

Edite el archivo diffsample2 como:

Y edite el archivo diffsample1 como:

La única diferencia son las letras mayúsculas en el archivo diffsample2. Ahora comparémoslo usando diff nuevamente:

# diff diffsample1 diffsample2

Como puede ver las diferencias encontradas en las diferencias, las letras mayúsculas, evitamos la detección de diferencias en las letras mayúsculas, si no estamos interesados ​​en las diferencias entre mayúsculas y minúsculas agregando las -I opción:

# diff -i diffsample1 diffsample2

No se encontraron diferencias, la detección de casos se deshabilitó.

Ahora cambiemos el formato de salida agregando la opción -tu utilizado para imprimir salidas unificadas:

Además, hasta la fecha y la hora, la salida se muestra con un - y + símbolo lo que debe eliminarse y lo que debe agregarse para que los archivos sean iguales.

Al comienzo de este artículo dije que los espacios y las pestañas deben ser iguales en ambos archivos, ya que también son detectados por el comando diff, si queremos que el comando diff ignore los espacios y las pestañas debemos aplicar el -w opción.

Abra el archivo diffsample2 y agregue espacios y pestañas:

Como puede ver, agregué un par de pestañas después de "lo mejor" en la segunda línea y también espacios en todas las líneas, cierre, guarde el archivo y ejecute:

# diff diffsample1 diffsample2

Como puede ver se encontraron diferencias, además de las letras mayúsculas. Ahora apliquemos la opción  -w para indicarle a diff que ignore los espacios en blanco:

Como ves a pesar de la tabulación diff solo se encuentran como diferencia las letras mayúsculas.
Ahora agreguemos la opción -i nuevamente:

#diff -wi diffsample2 diffsample1

El comando diff tiene docenas de opciones disponibles para aplicar para ignorar, cambiar la salida, discriminar columnas cuando están presentes, etc. Puede obtener información adicional sobre estas opciones usando el comando man, o en http: // man7.org / linux / man-pages / man1 / diff.1.html. Espero que haya encontrado útil este artículo con ejemplos de comandos diff en Linux. Siga siguiendo LinuxHint para obtener más consejos y actualizaciones sobre Linux y redes.

Los mejores juegos de línea de comandos para Linux
La línea de comandos no es solo su mayor aliado cuando usa Linux, también puede ser la fuente de entretenimiento porque puede usarla para jugar muchos...
Las mejores aplicaciones de mapeo de gamepad para Linux
Si te gusta jugar juegos en Linux con un gamepad en lugar de un sistema de entrada de teclado y mouse típico, hay algunas aplicaciones útiles para ti....
Herramientas útiles para jugadores de Linux
Si le gusta jugar juegos en Linux, es probable que haya utilizado aplicaciones y utilidades como Wine, Lutris y OBS Studio para mejorar la experiencia...