Divendres de terminal: Patch i Diff

Dues de les eines essencials en el desenvolupament de programari són pegat y Dif. No és un misteri com funcionen, però penso que aquest serà un post interessant. 🙂

Totes dues són molt potents, i això és només com tocar la superfície, tenen més utilitats i altres funcions. Bàsicament amb aquestes dues eines podem crear control de versions,


Dif

Ens referim a comparació, compara un arxiu «original» amb el «nou», i ens informa de les diferències que hi ha entre ells. Aquesta eina també permet crear arxius .patch que ens serveixen per crear pegats dels nostres programes.


pegat

És la comanda amb el qual literalment «parcheamos» nostre arxiu original, afegint i / o eliminant línies d'acord a les instruccions contingudes a l'arxiu .patch


També hi ha vimdiff, Que és una eina visual per aplicar els pegats sense necessitat d'un arxiu .patch, ja que compara «original» i «nou» i sobre el mateix arxiu és possible editar línia per línia o tot el document. Això no ho explicaré però crec que mereix una menció.


Exemple

Ara sí que ho divertit. ¡Exemple!

Aquest és el cas, tenim un script genial que desitja el teu nom i la teva edat, si ets major de 18 anys et diu que pots votar, de el cas contrari et diu que no pots votar.

original.sh

#! / Bin / bash echo "Escriu el teu nom:" read nom echo "Escriu la teva edat:" read edat if [[18 -lt $ edat]] then echo "Hola $ nom, tens $ edat I pots votar!" else echo "Hola $ nom, tens $ edat i no pots votar ..." fi
Imatge d'el codi a Vim

Imatge d'el codi a Vim

A punt, aquí es mostra l'script en execució:

Sembla que tot funciona bé

Sembla que tot funciona bé

Llavors, com a bons usuaris que som, compartim el nostre script a un amic :), però ens arriba un missatge dient que té una falla, que quan té 18 diu que no pot votar quan sí hauria.

Error de lògica :(

Error de lògica 🙁

Ara ens posem a corregir el petit error ia fer unes quantes modificacions ...

nou.sh

#! / Bin / bash maxEdad = 18 echo "Escriu el teu nom:"; read nom echo "Escriu la teva edat:"; read edat if [[$ maxEdad -li $ edat]]; then echo "Hola $ nom, tens $ edat anys I pots votar!" else echo "Hola $ nom, tens $ edat anys i no pots votar ..." fi exit 0
Codi nou escrit en Vim

Codi nou escrit en empenta

Suposem que l'script és molt pesat. Llavors, per no enviar de nou tot l'script, vam crear un .patch 😀

$ Diff -u original.sh nuevo.sh> parche.patch

I ara tenim el nostre pegat. Aquí una vista en empenta:

Així es veuen les instruccions d'un .patch. En blanc les línies que no es van modificar, en blau les eliminades, en taronja les agregades.

Així es veuen les instruccions d'un .patch. En blanc les línies que no es van modificar, en blau les eliminades, en taronja les agregades.

I per aplicar-simplement fem servir l'arxiu .patch en l'script a parchar. Aquí es diu originalAmic.sh, Que és una còpia exacta de l'script original.sh

Script d'l'amic

Script d'l'amic

$ Patch originalAmigo.sh <parche.patch

I això ens deixa el nostre arxiu originalAmic.sh així:

Script d'l'amic després d'aplicar el pegat

Script d'l'amic després d'aplicar el pegat

Com poden veure és molt fàcil obtenir els diff i aplicar els patch. De la meva part és tot.

Salutacions gent, ens llegim divendres que ve.


Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: Miguel Ángel Gatón
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.

  1.   Xerix va dir

    Genial, moltes gràcies 🙂

  2.   angelblade va dir

    Si vols una mica de color, usa colordiff ^ __ ^

  3.   eliotime3000 va dir

    Ara entenc com funcionen els pegats a Debian.

  4.   fer_pflores va dir

    Hola, es que es poden mostrar notificacions de sistema amb notify-send des de la consola, però el que voldria fer és poder programar a quina hora o quant temps em mostri una notificacion, hi ha alguna manera de fer-ho? Ús elementary, el qual té la seva base en Ubuntu 12.04, per si és d'ajuda, gràcies

    1.    ILAV va dir

      Doncs si es pot fer usant el cron de sistema 😉

      1.    fer_pflores va dir

        i això com es pot fer? tot just vaig aprendre a fer servir la comanda notify-send

        1.    wada va dir

          Pots buscar cron aquí al bloc hi ha molts post sobre el 🙂

  5.   Joaquin va dir

    Molt bo, gràcies!

  6.   caçador va dir

    Sempre ús això per actualitzar el nucli, descàrrec només els patch i aplico als sources, així no he de baixar 80MB cada release.