Introducción
La diff
de Linux El comando se usa para comparar dos archivos línea por línea y mostrar la diferencia entre ellos. Esta utilidad de línea de comandos enumera los cambios que debe aplicar para que los archivos sean idénticos.
Siga leyendo para obtener más información sobre diff
comando y sus opciones con ejemplos fáciles de seguir.
diff Sintaxis
La sintaxis para usar diff
el comando es:
diff [option] file1 file2
Sintaxis de salida
Al trabajar con diff
, es crucial saber interpretar la salida, que consiste en:
- Salida que comienza con
<
se refiere al contenido del primer archivo. - Salida que comienza con
>
se refiere al contenido del segundo archivo. - Números de línea correspondientes al primer archivo.
- Un símbolo especial. Los símbolos especiales indican cómo debe editarse el primer archivo para que coincida con el segundo archivo. La salida puede mostrar:
a
(añadir)c
(cambiar)d
(eliminar)
- Números de línea correspondientes al segundo archivo.
Ejemplo de diferencias
Para mostrar cómo diff
comando funciona, creamos dos archivos de muestra y comparamos su contenido.
Crear dos archivos de muestra
1. Primero, usando la terminal, cree un archivo Linux llamado example1.txt . Usamos el editor de texto Nano, pero puede usar un editor de texto de su elección.
sudo nano example1.txt
2. Una vez que el editor de texto crea y abre el archivo, agregue las siguientes líneas:
Apple
Orange
Banana
Watermelon
Chery
3. Guarde y salga del archivo:mantenga presionada Ctrl + X y confirme presionando Y .
4. A continuación, cree un example2.txt archivo ejecutando:
sudo nano example2.txt
5. Agregue el siguiente contenido al archivo:
Orange
Peach
Apple
Banana
Melon
Cherry
6. Guarde los cambios y salga.
Comparar los archivos con el comando diff
1. Con los dos archivos de muestra en su lugar, use el diff
comando para ver en qué se diferencian y cómo hacerlos idénticos:
diff example1.txt example2.txt
El resultado enumera instrucciones sobre cómo modificar el primer archivo para que tenga el mismo contenido que en example2.txt . Veamos la salida de los archivos de muestra y decodifiquemos las instrucciones.
1d0
– La primera línea (1
) del primer archivo debe eliminarse (d
). Si no, aparecería en la línea0
en el segundo archivo.< Apple
–El contenido que necesita eliminar (como se hace referencia con1d0
).2a2,3
– En línea2
del primer archivo, debe agregar (a
) líneas2
y3
(2,3
) del segundo archivo.> Peach
,> Apple
– El contenido que necesita agregar (como se hace referencia con2a2,3
).4c5
– La cuarta línea (4
) del primer archivo debe cambiarse (c
) a la quinta línea (5
) del segundo archivo.< Watermelon
– El contenido que necesita cambiar.> Melon
– A qué necesita cambiarlo.
Opciones de diferencias
Sin opciones adicionales, diff
muestra la salida en el formato predeterminado. Hay formas de modificar este resultado para que sea más comprensible o aplicable para su caso de uso. Siga leyendo para obtener más información sobre diff
opciones de comando.
-c Opción
El formato de contexto es diff
opción de utilidad de línea de comandos que genera varias líneas de contexto alrededor de las líneas que difieren.
Para mostrar la diferencia entre los archivos en forma de contexto, use el comando:
diff -c file1 file2
Eche un vistazo a la salida de los archivos de muestra en el formulario de contexto en la imagen a continuación.
Las líneas que muestran información sobre el primer archivo comienzan con ***
, mientras que las líneas que indican el segundo archivo comienzan con ---
.
Las dos primeras líneas muestran el nombre y la marca de tiempo de ambos archivos:
*** example1.txt 2021-12-27 10:53:30.700640904 +0100
--- example2.txt 2021-12-27 10:54:41.304939358 +0100
****************
- se usa solo como separador.
Antes de enumerar las líneas de cada archivo, la salida comienza con el rango de línea de los archivos:
*** 1,5 ****
--- 1,6 ----
El resto de las líneas enumeran el contenido de los archivos. El comienzo de cada línea indica cómo modificar example1.txt para que sea igual que example2.txt . Si la línea comienza con:
-
(menos):debe eliminarse del primer archivo.
+
(más):debe agregarse al primer archivo.
!
(signo de exclamación):debe cambiarse a la línea correspondiente del segundo archivo.
Si no hay símbolo, la línea sigue siendo la misma.
Por lo tanto, en el ejemplo anterior, debe eliminar Apple
desde la primera línea, reemplaza Watermelon
con Melon
en la línea cuatro y agrega Peach
y Apple
a las líneas dos y tres.
-u Opción
El formato unificado es una opción que puede agregar para mostrar la salida sin líneas de contexto redundantes. Para hacerlo, use el comando:
diff -u file1 file2
Ahora, examinemos la salida de los archivos de muestra en el formato unificado:
Las líneas que muestran información sobre el primer archivo comienzan con ---
, mientras que las líneas que indican el segundo archivo comienzan con +++
.
Las dos primeras líneas muestran el nombre y la marca de tiempo de ambos archivos:
*** example1.txt 2021-12-27 10:53:30.700640904 +0100
--- example2.txt 2021-12-27 10:54:41.304939358 +0100
@@ -1,5 +1,6 @@
- muestra el rango de línea para ambos archivos.
Las líneas a continuación muestran el contenido de los archivos y cómo modificar example1.txt para hacerlo idéntico a example2.txt . Cuando la línea comienza con:
-
(menos):debe eliminarse del primer archivo.
+
(más):debe agregarse al primer archivo.
Si no hay símbolo, la línea sigue siendo la misma.
En el ejemplo anterior, el resultado indica que Apple
y Watermelon
debe eliminarse, mientras que Peach
, Apple
y Melon
debe agregarse.
-i Opción
Por defecto, diff
distingue entre mayúsculas y minúsculas. Si desea que ignore mayúsculas y minúsculas, agregue -i
opción al comando:
diff -i file1 file2
Por ejemplo, si creamos un archivo con las siguientes líneas:
Apple
Orange
Banana
Watermelon
Cherry
Y otro archivo con el contenido:
Apple
orange
Banana
watermelon
Cherry
La salida sin opciones adicionales muestra que hay diferencias entre los archivos y da instrucciones sobre cómo modificarlos.
Sin embargo, si agrega el -i
opción, no hay salida ya que el comando no detecta ninguna diferencia.
--Opción de versión
Para comprobar la versión de diff
ejecutándose en su sistema, ejecute el comando:
diff --version
--Opción de ayuda
Para generar un resumen de diff
ejecución de uso:
diff --help
Otras opciones de diferencias
Otras opciones que diff
los apoyos incluyen:
-a / --text | Ver archivos como texto y compararlos línea por línea. |
-b / --ignore-space-change | Ignore los espacios en blanco al comparar archivos. |
-B / --ignore-blank-lines<code> | Ignore las líneas en blanco al comparar archivos. |
--binary | Compara y escribe datos en modo binario. |
-d --minimal | Modifique el algoritmo (por ejemplo, para encontrar un conjunto más pequeño de cambios). |
-e / --ed | Hacer que la salida sea ed válida guión. |
-E / --ignore-tab-expansion | Ignorar la extensión de tabulación al comparar archivos. |
-l / --paginate | Ejecutar la salida a través de pr para paginarlo. |
-N / --new-file | Tratar un archivo perdido como presente pero vacío. |
-q / --brief | Indique si los archivos difieren sin especificar detalles. |
-s / --report-identical-files | Salida cuando los archivos son idénticos. |
-w / --ignore-all-space | Ignore los espacios en blanco al comparar archivos. |