Терминал петък: Patch and Diff

Два от основните инструменти при разработването на софтуер са Кръпка y Разлика. Не е загадка как работят, но мисля, че това ще бъде интересна публикация. 🙂

И двете са много мощни и това е точно като докосване на повърхността, те имат повече помощни програми и други функции. По принцип с тези два инструмента можем да създадем контрол на версиите,


Разлика

Позоваваме се на сравнението, той сравнява „оригинален“ файл с „новия“ и ни информира за разликите, които съществуват между тях. Този инструмент също ни позволява да създаваме .patch файлове, които използваме за създаване на кръпки за нашите програми.


Кръпка

Това е командата, с която буквално „закърпваме“ оригиналния си файл, добавяйки и / или премахвайки редове в съответствие с инструкциите, съдържащи се в .patch файла


Също съществува вимдиф, което е визуален инструмент за прилагане на кръпки, без да е необходим .patch файл, тъй като сравнява "оригинал" и "нов" и в същия файл е възможно да редактирате ред по ред или целия документ. Това няма да обяснявам, но мисля, че заслужава да се спомене.


пример

Сега забавлението е. Пример!

Такъв е случаят, имаме страхотен скрипт, който пита за вашето име и възраст, ако сте над 18 години, той ви казва, че можете да гласувате, в противен случай ви казва, че не можете да гласувате.

оригинал.ш

#! / bin / bash echo "Въведете името си:" read name echo "Въведете вашата възраст:" read age if [[18 -lt $ age]] след това echo "Здравейте $ име, вие сте на възраст и можете да гласувате!" else echo "Hello $ name, вие сте $ old и не можете да гласувате ..." fi
Изображение на кода във Vim

Изображение на кода във Vim

Готово, ето изпълняващият се скрипт:

Изглежда всичко работи добре

Изглежда всичко работи добре

Така че, като добри потребители, каквито сме, ние споделяме нашия скрипт с приятел :), но получаваме съобщение, че има недостатък, че когато е на 18, казва, че не може да гласува, когато трябва.

Логическа грешка :(

Логическа грешка 🙁

Сега започваме да коригираме малката грешка и правим няколко модификации ...

нов.ш

#! / bin / bash maxAge = 18 echo "Въведете името си:"; прочетете име echo "Напишете вашата възраст:"; прочетете възрастта, ако [[$ maxAge -le $ age]]; след това ехо "Здравейте $ име, вие сте на $ години и можете да гласувате!" else echo "Hello $ name, вие сте $ old и не можете да гласувате ..." fi изход 0
Нов код, написан на Vim

Нов код, написан на Vim

Да предположим, че сценарият е много тежък. И така, за да не изпращаме отново целия скрипт, ние създаваме .patch 😀

$ diff -u original.sh new.sh> patch.patch

И сега имаме своя пластир. Ето изглед в Vim:

Ето как изглеждат инструкциите за .patch. В бяло линиите, които не са модифицирани, в синьо премахнатите, в оранжево добавените.

Ето как изглеждат инструкциите за .patch. В бяло линиите, които не са модифицирани, в синьо премахнатите, в оранжево добавените.

И за да го приложим, ние просто използваме .patch файла в скрипта, който трябва да бъде закърпен. Тук се нарича оригиналенAmigo.sh, което е точно копие на скрипта оригинал.ш

Приятелски сценарий

Приятелски сценарий

$ patch originalFriend.sh <patch.patch

И това ни оставя нашето досие оригиналенAmigo.sh Така:

Приятелски скрипт след прилагане на кръпка

Приятелски скрипт след прилагане на кръпка

Както можете да видите, е много лесно да получите разликите и да приложите кръпките. Всичко е от мен.

Поздрави хора, ще четем следващия петък.


Оставете вашия коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *

*

*

  1. Отговорен за данните: Мигел Анхел Гатон
  2. Предназначение на данните: Контрол на СПАМ, управление на коментари.
  3. Легитимация: Вашето съгласие
  4. Съобщаване на данните: Данните няма да бъдат съобщени на трети страни, освен по законово задължение.
  5. Съхранение на данни: База данни, хоствана от Occentus Networks (ЕС)
  6. Права: По всяко време можете да ограничите, възстановите и изтриете информацията си.

  1.   Ксерикс каза той

    Чудесно, много благодаря 🙂

  2.   ангелблейд каза той

    Ако искате цвят, моля използвайте colordiff ^ __ ^

  3.   eliotime3000 каза той

    Сега разбирам как корекциите работят в Debian.

  4.   fer_pflores каза той

    Здравейте, знам, че системните известия могат да се показват с известие-изпращане от конзолата, но това, което бих искал да направя, е да мога да планирам колко часа или колко време да ми покаже известие, има ли някакъв начин да го направя? Използвам елементарно, което се основава на Ubuntu 12.04, в случай че помага, благодаря

    1.    елав каза той

      Е, това може да се направи с помощта на системата cron 😉

      1.    fer_pflores каза той

        и как може да се направи това? Едва научих как да използвам командата notify-send

        1.    вада каза той

          Можете да търсите cron тук в блога, има много публикации за него 🙂

  5.   Хоакин каза той

    Много добре благодаря!

  6.   dhunter каза той

    Винаги използвам това, за да актуализирам ядрото, изтеглям само кръпките и прилагам към източниците, така че не е нужно да изтеглям 80mb всяка версия.