El comando diff se usa para comparar archivos de texto. El comando muestra los dos archivos y las diferencias entre ellos. Usando varios símbolos, la salida sugiere cómo puede cambiar un archivo para que sea idéntico al otro. Cada símbolo tiene un significado especial.
El símbolo menor que (<) con una línea después significa que esa línea debe eliminarse del primer archivo porque no aparece en el segundo. El símbolo mayor que (>) seguido de una línea significa que esa línea debe agregarse desde el segundo archivo. Además, el comando diff también indica los números de línea de cada archivo que se vería afectado por las operaciones de eliminación, adición y cambio.
Sintaxis
La sintaxis del comando diff es:
# diff {file name 1} {file name 2}
OPCIONES DE COMANDO diff
El comando diff tiene varias opciones que le permiten especificar la naturaleza de la salida.
Opción | Descripción |
---|---|
-b | Ignore las diferencias de espaciado. |
-i | Ignore las diferencias entre mayúsculas y minúsculas. |
-t | Expandir los caracteres de tabulación en las líneas de salida. |
-w | Ignore las diferencias de espaciado y las tabulaciones. |
-c | Muestre una lista de diferencias con tres líneas de contexto. |
-u | Resultados de salida en modo unificado, que presenta un formato más optimizado. |
Ejemplos de comandos diff
1. Compara archivos (enumera los cambios para convertir `old_file` en `new_file`):
# diff old_file new_file
2. Compara archivos, ignorando los espacios en blanco:
# diff --ignore-all-space old_file new_file
3. Compara archivos, mostrando las diferencias una al lado de la otra:
# diff --side-by-side old_file new_file
4. Compare archivos, mostrando las diferencias en formato unificado (como lo usa `git diff`):
# diff --unified old_file new_file
5. Comparar directorios de forma recursiva (muestra los nombres de los diferentes archivos/directorios, así como los cambios realizados en los archivos):
# diff --recursive old_directory new_directory
6. Compara directorios, mostrando solo los nombres de los archivos que difieren:
# diff --recursive --brief old_directory new_directory
7. Cree un archivo de parche para Git a partir de las diferencias de dos archivos de texto, tratando los archivos inexistentes como vacíos:
# diff --text --unified --new-file old_file new_file > diff.patch
8. diff también puede comparar directorios:
# diff dir1 dir2
que compara cualquier archivo con el mismo nombre en esos directorios y enumera todos los archivos que aparecen en un directorio pero no en el otro. Para comparar jerarquías de directorios completas de forma recursiva, utilice la opción -r:
# diff -r dir1 dir2
que produce un informe (potencialmente masivo) de todas las diferencias.
Conclusión
El comando diff compara dos archivos línea por línea o dos directorios. Al comparar archivos de texto, diff puede producir informes detallados de sus diferencias. Para archivos binarios, diff simplemente informa si difieren o no. Para todos los archivos, si no hay diferencias, diff no produce ningún resultado.