Usando diff y colordiff: Marcando la diferencia en la línea de comando de #Linux

Diff y colordiff son dos comandos para la línea de comandos de GNU/Linux muy útiles para ver las diferencias entre dos carpetas o archivos.

Con la utilidad de GNU/Linux para la línea de comandos diff y colordiff podremos, desde una consola, comparar dos carpetas o dos archivos, y esta utilidad nos mostrará cuales son los cambios entre las dos carpetas o los dos archivos.

colordiff es básicamente lo mismo que diff, pero de manera predeterminada nos muestra la información con colores, lo que lo hace más visual y más sencillo de ver las diferencias entre ambos archivos.

Con diff también podremos hacer que muestre el resultado en color, añadiendo la opción –color al invocar el comando. El uso Básico del comando es muy sencillo:

diff archivo1.txt archivo2.txt

En este caso lo que hará diff será comparar las modificaciones que tiene el archivo2 respecto del archivo1. Diff nos mostrará aquello que se ha añadido, cambiado o eliminado del archivo2 respecto del archivo1.

Supongamos que tenemos dos archivos y que al compararlos nos muestra lo siguiente:

3a4,5
> añadida la línea en archivo 2
> añadida otra línea
6,7c8
< PRETTY_NAME="openSUSE Tumbleweed"
< ANSI_COLOR="0;32"
---
> PRETTY_NAME="openSUSE Tumbleweed" have a lot of fun
10d10
< HOME_URL="https://www.opensuse.org/"

Vemos que aparecen unos número y letras, veamos lo que significan. Los números a la izquierda de la letra corresponden a la línea o líneas del archivo1 y los de la derecha al archivo2. Las letras significan:

  • a → “added”, añadido
  • c → “changed”, cambiado
  • d → “deleted”, eliminado

Es decir nos muestra las líneas de uno y otro archivo y si se ha añadido algo, se ha cambiado o eliminado algo. Y nos muestra aquello que se ha añadido, cambiado o eliminado.

A continuación comparto un video tutorial que he realizado con este comando, y mostrando algunas de los usos más básicos de esta herramienta, que tiene muchas opciones.

También relacionado con diff está el comando patch. Con diff podemos enviar el resultado a un archivo, y después mediante patch podemos incorporar esas modificaciones en el archivo original. Hay que tener en cuenta que el archivo se sobre escribe, por lo que tenemos que tenerlo en cuenta si queremos guardar una copia del original.

El vídeo está alojado en archive.org desde donde lo podéis descargar en formato libre webm.

También está en YouTube para quien prefiera esta plataforma. Puedes descargar el vídeo sin necesidad de visitar YouTube mediante la utilidad youtube-dl ejecutando el siguiente comando.

youtube-dl -f 22 https://www.youtube.com/watch?v=IEUx0b7IAWM

Si prefieres un software similar pero con interfaz gráfica, en KDE existe Kompare.

Enlaces de interés

—————————————————-

5 pensamientos en “Usando diff y colordiff: Marcando la diferencia en la línea de comando de #Linux

  1. … buen video, ahora conosco la utilidad de diff para otro comando

    una pregunta solamente, entiendo la utilidad del colocar el diff en un archivo, pero creo que no habria diferencia entre usar patch y hacer una copia (cat o algo) del archivo 2 al 1, es eso asi?

    • Hola!

      sí, pero no. 🙂
      Quizás en algún casi si te valga con copiar el archivo, pero quizás en otros quieres aplicar el parche…

      Saludos y gracias por comentar! 😉

  2. Gracias, no conocía esta utilidad. Y el vídeo ni se diga, así es más fácil de entender.

    ¡Qué estés bien! 🙂

Me gustaría saber tu opinión. Deja un comentario (Puedes usar MarkDown)

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

w

Conectando a %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.