Pregunta 1En la salida en formato unificado de diff, ¿qué símbolo empieza una línea eliminada (una que estaba en el archivo antiguo)?
Diferencias entre archivos — diff
Este artículo forma parte del Curso de Linux, con el que dominarás desde cero habilidades prácticas de Linux, desde los comandos básicos hasta los scripts de shell.
Mira cómo comprobar las diferencias entre dos archivos con diff. Leerás qué líneas se añadieron, eliminaron o cambiaron, con diagramas y una terminal práctica dentro de tu navegador.
Cuándo usar diff
Úsalo cuando quieras comprobar qué cambiaste después de editar un archivo, o si dos archivos tienen el mismo contenido. Le pasas dos archivos y muestra solo las líneas que difieren.
Comparar dos archivos — diff
diff compara dos archivos y muestra solo las partes que difieren. Lo usas como diff old.txt new.txt, tratando el primer archivo como la versión antigua (antes) y el segundo como la nueva (después). Las líneas iguales no se imprimen — solo se reportan las diferencias.
diff old.txt new.txt alinea los dos archivos y muestra solo la segunda línea que difiere como -banana (antiguo) y +grape (nuevo). Las iguales apple y cherry no se imprimen.En la terminal del navegador, diff muestra las diferencias en formato unificado. Los --- y +++ iniciales son los nombres de los dos archivos comparados, la línea @@ indica dónde ocurrió el cambio, y en el cuerpo cada línea eliminada empieza con - y cada línea añadida con +. Las líneas sin cambios empiezan con un espacio y aparecen al lado como contexto.
| Símbolo | Significado |
|---|---|
--- old.txt | Nombre del primer archivo (antiguo) comparado |
+++ new.txt | Nombre del segundo archivo (nuevo) comparado |
@@ -N,M +N,M @@ | Información de posición de dónde ocurrió el cambio |
- línea | Una línea eliminada (estaba en el archivo antiguo) |
+ línea | Una línea añadida (está en el archivo nuevo) |
línea (espacio al inicio) | Una línea sin cambios mostrada junto como contexto |
@@ indica la posición del cambio, - una línea eliminada (antiguo) y + una línea añadida (nuevo). Las líneas sin cambios aparecen al lado con un espacio al inicio.printf 'apple\nbanana\ncherry\n' > old.txt # crea la muestra
printf 'apple\ngrape\ncherry\n' > new.txt # una muestra que difiere por una línea
diff old.txt new.txt
--- old.txt
+++ new.txt
@@ -1,3 +1,3 @@
apple
-banana
+grape
cherry
Leer añadidos y eliminaciones
Las diferencias no son solo reescrituras. Cuando se añade una línea solo en el archivo de la derecha, obtienes únicamente una línea +; cuando se elimina una línea del archivo de la izquierda, obtienes únicamente una línea -. En lugar de que - y + aparezcan en pareja como en una reescritura, que aparezca solo uno de ellos es la señal de un añadido o una eliminación. Invierte el orden en que comparas y la misma diferencia cambia entre + (añadida) y - (eliminada).
printf 'one\ntwo\n' > base.txt # crea la muestra
printf 'one\ntwo\nthree\n' > more.txt # una muestra con una línea añadida
diff base.txt more.txt
--- base.txt
+++ more.txt
@@ -1,2 +1,3 @@
one
two
+three
diff base.txt more.txt muestra +three (añadida), mientras que el invertido diff more.txt base.txt muestra -three (eliminada).diff y patch, y cómo lo muestran otros entornos
El diff en formato unificado que produce diff puede aplicarse a otro archivo tal cual con el comando patch. Cuando un equipo intercambia correcciones, pasarse este diff (un parche) de un lado a otro es común. Este curso se centra en leer diffs y no cubre aquí cómo aplicarlos.
En la terminal del navegador de este curso, diff produce el formato unificado directamente. Con GNU diff en Ubuntu y similares, diff a secas muestra el formato tradicional usando 2c2 y < / >, y al añadir diff -u se obtiene el mismo formato unificado que se usa en este curso.
Verificación de conocimientos
Responde cada pregunta una a una.
Pregunta 2¿Qué muestra una línea como @@ -1,3 +1,3 @@?
Pregunta 3Cuando se añade una línea solo en el archivo de la derecha, ¿cómo se ve la salida de diff?