Terminal piątek: łatka i różnica

Dwa z podstawowych narzędzi w tworzeniu oprogramowania to Łata y Diff. Nie jest tajemnicą, jak działają, ale myślę, że będzie to ciekawy post. 🙂

Oba są bardzo potężne, a to tylko zarysowanie powierzchni, mają więcej narzędzi i innych funkcji. Zasadniczo za pomocą tych dwóch narzędzi możemy stworzyć kontrolę wersji,


Diff

Mamy na myśli porównanie, które porównuje plik „oryginalny” z „nowym” i informuje nas o różnicach, jakie istnieją między nimi. Narzędzie to pozwala nam również tworzyć pliki .patch, których używamy do tworzenia łatek dla naszych programów.


Łata

Jest to polecenie, za pomocą którego dosłownie „łatamy” nasz oryginalny plik, dodając i/lub usuwając linie zgodnie z instrukcjami zawartymi w pliku .patch


Istnieje również vimdiff, które jest wizualnym narzędziem do stosowania poprawek bez potrzeby posiadania pliku .patch, ponieważ porównuje „oryginał” z „nowym” i na tym samym pliku można edytować linia po linii lub cały dokument. Nie będę tego wyjaśniał, ale myślę, że warto o tym wspomnieć.


Przykład

Teraz zabawna część. Przykład!

Tak właśnie jest, mamy świetny skrypt, który pyta o Twoje imię i wiek, jeśli masz ukończone 18 lat, informuje Cię, że możesz głosować, w przeciwnym razie informuje Cię, że nie możesz głosować.

oryginał.sh

#!/bin/bash echo "Wpisz swoje imię: " read name echo "Wpisz swój wiek: " przeczytaj wiek, jeśli [[ 18 -lt $wiek ]], a następnie echo "Witaj $imię, masz $wiek i możesz głosować! " else echo "Witaj $name, jesteś $stary i nie możesz głosować..." fi
Obraz kodu w Vimie

Obraz kodu w Vimie

Gotowe, oto działający skrypt:

Wszystko wydaje się działać dobrze

Wszystko wydaje się działać dobrze

Jako że jesteśmy dobrymi użytkownikami, udostępniliśmy nasz skrypt znajomemu :), ale otrzymaliśmy wiadomość, że ma on wadę, że gdy ma 18 lat, oznacza to, że nie może głosować, kiedy powinien.

Błąd logiczny :(

Błąd logiczny 🙁

Teraz zaczynamy poprawiać mały błąd i wprowadzać kilka modyfikacji...

nowy.sh

#!/bin/bash maxAge=18 echo "Wpisz swoje imię: "; przeczytaj imię echo "Podaj swój wiek: "; przeczytaj wiek, jeśli [[ $maxAge -le $age ]]; następnie powtórz echo „Witam $name, masz $lat i możesz głosować!” else echo "Witaj $name, masz $lat i nie możesz głosować..." fi exit 0
Nowy kod napisany w Vimie

Wpisany nowy kod Vim

Załóżmy, że scenariusz jest bardzo ciężki. Aby więc uniknąć ponownego wysyłania całego skryptu, tworzymy .patch 😀

$ diff -u oryginalny.sh nowy.sh > patch.patch

A teraz mamy naszą łatkę. Oto widok w Vim:

Tak wyglądają instrukcje dotyczące poprawki. Na biało linie, które nie zostały zmodyfikowane, na niebiesko te usunięte, na pomarańczowo te dodane.

Tak wyglądają instrukcje dotyczące poprawki. Na biało linie, które nie zostały zmodyfikowane, na niebiesko te usunięte, na pomarańczowo te dodane.

Aby go zastosować, po prostu używamy pliku .patch w skrypcie, który ma zostać załatany. Tutaj to się nazywa oryginałAmigo.sh, który jest dokładną kopią skryptu oryginał.sh

Scenariusz znajomego

Scenariusz znajomego

$ łatka oryginalnyPrzyjaciel.sh < łatka.łatka

I tak zostajemy z naszym plikiem oryginałAmigo.sh Więc:

Skrypt kolegi po zastosowaniu patcha

Skrypt kolegi po zastosowaniu patcha

Jak widać bardzo łatwo jest uzyskać różnice i zastosować łatki. To wszystko ode mnie.

Pozdrawiam ludzi, do zobaczenia w przyszły piątek.


Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: Miguel Ángel Gatón
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.

  1.   Xerix powiedział

    Super, dziękuję bardzo 🙂

  2.   Angelblade powiedział

    Jeśli chcesz trochę koloru, użyj colordiff ^__^

  3.   Eliotime3000 powiedział

    Teraz rozumiem, jak działają łatki w Debianie.

  4.   fer_pflores powiedział

    Witam, wiem, że powiadomienia systemowe można wyświetlać za pomocą funkcji powiadamiania-wysyłania z konsoli, ale chciałbym móc zaprogramować, o której godzinie i jak długo będzie mi wyświetlać powiadomienie. Czy jest na to sposób? Używam Elementary opartego na Ubuntu 12.04, na wypadek, gdyby to pomogło, dzięki

    1.    pełen życia powiedział

      No cóż, da się to zrobić za pomocą systemowego crona 😉

      1.    fer_pflores powiedział

        i jak można to zrobić? Właśnie nauczyłem się korzystać z polecenia powiadamiania-wysyłania

        1.    Wada powiedział

          Crona możesz poszukać tutaj na blogu, jest wiele postów na ten temat 🙂

  5.   Joaquin powiedział

    Bardzo dobrze, dziękuję!

  6.   łowca powiedział

    Zawsze używam tego do aktualizacji jądra, pobieram tylko łatki i stosuję się do źródeł, więc nie muszę pobierać 80 MB każdej wersji.