Thursday, October 6, 2016

Linux Compare 2 Files Binary Options

Een van die mees algemene maniere om te bepaal of twee lêers is identies (met die aanvaarding van hul groottes te pas) is met behulp van 'n program om 'n gemors (in wese 'n vingerafdruk) van 'n lêer te skep. Die mees algemene hiervan is md5sum en sha1sum. As jy baie lêers wat jy nodig het om seker te maak, byvoorbeeld as jy die oordrag van 'n gids vol lêers van een stelsel na 'n ander, kan jy die uitvoer van die oorspronklike stelsel te herlei na 'n lêer, dan kan md5sum / sha1sum outomaties gebruik die lêer om jou te vertel wat lêers anders is: geantwoord 29 April 10 by 12:21 MD5 is nie altyd 'n betroubare hiervoor: digg / sekuriteit / hellip uitvoering maak Jon Cage 29 April 10 om 12:30 Eintlik, MD5 betroubaar vir basiese integriteit tjeks. Dit is net isn39t beskou as crypto sterk soos ons eens gedink. As jy bekommerd is oor hackers is, don39t gebruik MD5, maar as jy net wil weet of 'n paar lêers kopieer van 'n CD het korrup, of as jou samesteller uitspoeg identiese lêers elke keer, MD5 is meer as voldoende. â € Adam BATKIN 29 April 10 by 12: 551,7 binêre lêers en dwing teks Vergelykings As verskil van mening is dat enige van die twee lêers dit vergelyk is binêre ( 'n nie-tekslêer), is dit gewoonlik behandel dat denim lêers veel asof die opsomming uitvoer formaat is gekies (sien Opdrag), en verslae net dat die binêre lêers is anders. Dit is omdat reël vir reël vergelykings is gewoonlik nie betekenisvol vir binêre lêers. Dit tel nie as die moeilikheid, selfs al is die gevolglike uitset nie al die verskille te vang. diff bepaal of 'n lêer is teks of binêre deur die nagaan van die eerste paar grepe in die lêer die presiese aantal grepe is stelsel afhanklik is, maar dit is tipies 'n paar duisend. As elke byte in daardie deel van die lêer is nie-nul, verskil van mening dat die lêer te wees teks anders is dit van mening dat die lêer binêre te wees. Soms kan hê jy moet verskil te dwing om lêers te oorweeg om teks wees. Byvoorbeeld, kan jy vergelyk teks lêers wat nul karakters verskil sou verkeerdelik besluit dat dit is nie-teks lêers bevat. Of jy kan vergelyk dokumente wat in 'n formaat wat gebruik word deur 'n verwerking stelsel woord wat van nul karakters gebruik om spesiale formatering dui. Jy kan ewenaar dwing om alle lêers te oorweeg om tekslêers wees, en vergelyk hulle reël vir reël, deur die gebruik van die text opsie (-a). As die lêers jy vergelyk die gebruik van hierdie opsie nie in werklikheid teks bevat, sal hulle waarskynlik bevat paar NEWLINE karakters, en die verskil uitset sal bestaan ​​uit hunks wat verskille tussen lang rye van watter karakters die lêers bevat. Jy kan ook dwing verskil aan te meld net of lêers verskil (maar nie hoe). Gebruik die (q) opsie --brief hiervoor. In bedryfstelsels wat onderskei tussen teks en binêre lêers, verskil gewoonlik lees en skryf al die data as teks. Gebruik die --binary opsie te dwing verskil te lees en skryf binêre data in plaas. Hierdie opsie het geen effek op 'n POSIX-aanpasbare stelsel soos GNU of tradisionele Unix. Daar is egter baie persoonlike rekenaar bedryfstelsels verteenwoordig die einde van 'n lyn met 'n return gevolg deur 'n nuwe reël. Op sulke stelsels, verskil ignoreer gewoonlik hierdie enter op insette en genereer hulle aan die einde van elke uitset lyn, maar met die --binary opsie verskil hanteer elke return as net nog 'n toevoer karakter, en nie genereer 'n koets terugkeer na die einde van elke uitset lyn. Dit kan nuttig wees wanneer jy met nie-teks lêers wat bedoel is om omgeruil met POSIX-aanpasbare stelsels. Die --strip-sleep-cr oorsake verskil om insette lyne wat eindig in return gevolg deur NEWLINE asof hulle uiteindelik in 'n plat NEWLINE behandel. Dit kan nuttig wees wanneer vergelyk teks wat onvolmaak uit baie persoonlike rekenaar bedryfstelsels ingevoer. Hierdie opsie raak hoe lyne gelees word, wat op sy beurt invloed op hoe hulle met mekaar vergelyk word en uitset. As jy wil om te vergelyk twee lêers byte deur byte, kan jy die CMP program gebruik met die opsie --verbose (l) om die waardes van elke verskillende byte wys in die twee lêers. Met GNU CMP. jy kan ook gebruik om die - b of --print-grepe opsie om die ASCII voorstelling van die grepe wys. Sien Invoking CMP. vir meer inligting. As diff3 dink dat enige van die lêers dit vergelyk is binêre ( 'n nie-tekslêer), is dit gewoonlik verslae 'n fout, want sulke vergelykings is gewoonlik nie nuttig. diff3 gebruik dieselfde toets as diff om te besluit of 'n lêer is binêre. Soos met diff. As die invoer lêers bevat 'n paar nie-teks grepe maar andersins is soos tekslêers, kan jy diff3 dwing om alle lêers te oorweeg om tekslêers wees en vergelyk reël vir reël deur gebruik te maak van die - a of text option. Linux en Unix diff opdrag oor diff verskil ontledings twee lêers en die lyne wat verskillend is druk. In wese, wat dit uitset 'n stel instruksies vir hoe om 'n lêer om dit identies aan die tweede lêer maak verander. Dit maak nie eintlik die lêers egter verander, dit kan opsioneel genereer 'n skrif (met die - e opsie) vir die program uitg (of ex wat gebruik kan word om die veranderinge toe te pas. Hoe verskil Werke Kom ons sê ons het twee lêers, bestand1. txt en file2.txt As file1.txt bevat die volgende vier lyne van die teks. en file2.txt bevat hierdie vier lyne: dan kan ons verskil te gebruik om outomaties vertoon vir ons wat lyne verskil tussen die twee lêers met hierdie opdrag: en die uitset sal wees: Kom ons neem 'n blik op wat dit uitset beteken dat die belangrikste ding om te onthou is dat wanneer ewenaar is die beskrywing van hierdie verskille vir jou, sy doen in 'n voorskriftelike konteks:. sy vertel jou hoe om die eerste lêer verander om dit te maak ooreenstem met die tweede lêer die eerste reël van die ewenaar uitset sal bevat:. reëlnommers wat ooreenstem met die eerste lêer, 'n brief (. 'n vir byvoeging c vir 'n verandering of D vir delete.), en die lyn nommers wat ooreenstem met die tweede lêer. ons uitvoer bogenoemde 2,4c2,4 beteken: lines 2 tot 4 in die eerste lêer moet wees c opgehang om lyne te pas 2 tot 4 in die tweede lêer. Dit vertel ons dan wat die lyne is in elke lêer: Lines voorafgegaan deur 'n LT is lyne van die eerste lêer lyne voorafgegaan deur GT is lyne vanaf die tweede lêer. Die drie strepies (---) bloot te skei die lyne van lêer 1 en liasseer 2. Kom ons kyk na nog 'n voorbeeld. Kom ons sê ons twee lêers lyk: Hier is die uitset vertel Na lyn 2 in die eerste lêer, 'n lyn moet na 'n dded wees: lyn 3 van die tweede lêer. Dit wys vir ons wat dan daardie lyn is. Nou kan sien hoe dit lyk wanneer diff vertel wat ons nodig het om 'n lyn te verwyder. Hier is die uitset om ons te vertel Jy moet d elete lyn 4 in die eerste lêer sodat beide lêers te sinchroniseer by lyn 3. Dit wys vir ons dan die inhoud van die lyn wat moet verwyder word. Besigtig ewenaar Uitgawe in konteks bo Die voorbeelde toon die standaard uitset van verskil. Sy bedoel om gelees te word deur 'n rekenaar, nie 'n mens, so is dit vir menslike gebruik, soms help dit om die konteks van die veranderinge te sien. GNU ewenaar. wat is die weergawe meeste Linux-gebruikers sal gebruik, bied twee verskillende maniere om dit te doen: konteks af en verenigde af. Om verskille in konteks af te sien, gebruik die-c opsie. Byvoorbeeld, kan sê file1.txt en file2.txt die volgende bevat: Kom ons kyk na die kontekstuele uitset vir die verskil van die twee lêers. Ons opdrag is: En ons uitvoer lyk soos volg: Die eerste twee reëls van hierdie produksie wys ons inligting oor ons uit lêer (lêer 1) en ons op (lêer 2) in te dien. Dit bevat 'n lys van die lêernaam, die wysiging datum, en verandering tyd van elkeen van ons lêers, een per reël. Die uit lêer word aangedui deur, en die lêer word aangedui deur ---. Die lyn is net 'n skeiding. Die volgende reël het drie sterretjies () gevolg deur 'n lyn wissel van die eerste lêer (in hierdie geval lyne 1 tot 4. Geskei deur 'n komma). Dan vier sterretjies (). Dan wys dit vir ons die inhoud van daardie lyne. As die lyn is onveranderd, sy net voorafgegaan deur twee ruimtes. As die lyn is verander, maar sy voorafgegaan deur 'n aanduiding karakter en 'n ruimte. Die karakter betekenis is soos volg: dui aan dat hierdie lyn is deel van 'n groep van een of meer lyne wat nodig het om te verander. Daar is 'n ooreenstemmende groep lyne voorafgegaan deur in die ander lêers konteks sowel. Dui op 'n lyn in die tweede lêer wat gevolg moet word by die eerste lêer. Dui op 'n lyn in die eerste lêer wat moet verwyder word. Na afloop van die lyne van die eerste lêer, is daar drie strepies (---), dan 'n lyn reeks, dan vier koppeltekens (----). Dit dui op die lyn reeks in die tweede lêer wat sal pas nie met ons veranderinge in die eerste lêer. As daar meer as een afdeling wat nodig het om te verander, sal verskil hierdie afdelings wys die een na die ander. Lyne van die eerste lêer sal steeds met aangedui word, en lyne van die tweede lêer met ---. Verenigde af verenigde modus (die - U opsie) is soortgelyk aan konteks af, maar dit nie die geval enige oortollige inligting te vertoon. Hier is 'n voorbeeld, met behulp van dieselfde insette lêers as ons laaste voorbeeld: Die uitset is soortgelyk aan bogenoemde, maar soos jy kan sien, is die verskille verenig in een stel. Dit vind van die verskille in Gids Inhoud verskil kan ook vergelyk dopgehou bied eenvoudig gids name in plaas van lêername. Sien die artikel voorbeelde. Die gebruik van verskil om 'n Redigering Script Skep Die - e opsie vertel diff om uitset n script wat gebruik kan word deur die redigering programme ed of ex. wat die volgende bevat 'n reeks bevele. Die opdragte is 'n kombinasie van c (verandering), 'n (voeg), en d (skrap) wat, wanneer dit uitgevoer word deur die redakteur, sal die inhoud van bestand1 (die eerste lêer wat op die ewenaar command line) te verander sodat dit ooreenstem met die inhoud van file2 (die tweede lêer gespesifiseer). Kom ons sê ons het twee lêers met die volgende inhoud: Ons kan die volgende opdrag uit te voer om die twee lêers te analiseer met diff en produseer 'n script om 'n lêer identies aan file2.txt van die inhoud van die skep file1.txt: diff-e bestand1. txt file2.txt en die uitset sal soos volg lyk: Let daarop dat die veranderinge is opgeneem in omgekeerde volgorde: die veranderinge nader aan die einde van die lêer word eers gelys, en verander nader aan die begin van die lêer is verlede gelys. Dit is om lyn nommers te bewaar as ons die veranderinge aan die begin van die lêer, dat die lyn nommers later in die lêer kan verander word. So het die script begin aan die einde, en werk agteruit. Hier is die skrif vertel die redigering program: c hang die lyn 5 tot (die volgende lyn), en verandering lyne 2 deur 3 tot (die volgende twee lyne). Volgende, moet ons die skrif te red na 'n lêer. Ons kan die verskil uitset lei tot 'n lêer met die GT-operateur, soos volg: Dit sal nie iets op die skerm te vertoon (tensy daar 'n fout) plaas, is die uitset herlei word na die lêer my-ed-script. txt. As my-ed-script. txt nie die geval bestaan, sal dit geskep word indien dit bestaan ​​reeds, sal dit oorskryf. As ons nou die inhoud van check my-ed-script. txt met die kat opdrag. Ons sal dieselfde script Ons het hierbo vertoon sien. Theres nog een ding ontbreek egter: ons moet die script te red vertel om die lêer eintlik skryf. Alle dis ontbreek in die script is die w opdrag, wat die veranderinge sal skryf. Ons kan dit toevoeg tot ons script deur aansluit by die brief w en die gebruik van die gtgt operateur om dit toe te voeg tot ons lêer. (Die gtgt operateur is soortgelyk aan die GT operateur Dit aansture uitset na 'n lêer, maar in plaas van die vervang van die bestemming lêer, dit voeg daar aan die einde van die lêer..) Die opdrag lyk soos volg: Nou kan ons kyk om te sien dat ons script verander deur die loop van die kat opdrag weer: Nou ons script, wanneer uitgereik aan ed. sal die veranderinge aan te bring en die veranderinge op skyf skryf. So, hoe kry ons red nie hierdie Ons kan hierdie skrif te red uit te reik met die volgende opdrag, is dit vertel aan ons oorspronklike lêer te vervang nie. Die paneelbord (-) vertel ed om te lees van die standaard insette, en die LT operateur rig ons script om daardie insette. In wese is die stelsel betree alles wat in ons script as insette tot die redigering program. Die opdrag lyk soos volg: Hierdie opdrag gee niks, maar as ons kyk na die inhoud van ons oorspronklike lêer. Ons kan sien dat file1.txt wedstryde nou file2.txt presies. Waarskuwing In hierdie voorbeeld, ed oorskryf die inhoud van ons oorspronklike lêer, file1.txt. Na die uitvoer van die script, die oorspronklike teks van file1.txt verdwyn, so maak seker dat jy verstaan ​​wat jy doen voordat jy hierdie opdragte algemeen-gebruikte ewenaar Options Hier is 'n paar nuttige ewenaar opsies om kennis te neem van: FILES neem die vorm bestand1 FILE2 of map1 map2 of DIR-lêer. of leer. R. As die --from-lêer of --to-lêer opsies word, daar is geen beperking op die lêer (s). As 'n lêer is 'n aandagstreep (-), diff lees van standaard insette. Uitgang status is óf 0 as insette is dieselfde, 1 indien dit verskil, of 2 as ewenaar ontmoetings enige probleme. diff voorbeelde Hier is 'n voorbeeld van die gebruik van verskil om die verskille tussen twee lêers langs mekaar met behulp van die - y opsie te ondersoek, gegewe die volgende insette lêers: En soos belowe, hier is 'n voorbeeld van die gebruik van diff twee dopgehou vergelyk: Verwante opdragte bdiff mdash identifiseer die verskille tussen twee baie groot lêers. CMP mdash Vergelyk twee lêers byte deur byte. komm mdash Vergelyk twee gesorteerde lêers reël vir reël. dircmp mdash Vergelyk die inhoud van twee dopgehou, lys unieke lêers. ed mdash n eenvoudige teks editor. PR mdash Formateer n tekslêer te druk. LS mdash Lys die inhoud van 'n gids of dopgehou. sdiff mdash Vergelyk twee lêers, side-by-kant. Onlangs bygevoeg bladsye Nuttige linksI verkies VBinDiff. DHEX gebruik CPU, selfs wanneer die enjin luier, ek dink it39s herindeling al die tyd of iets. VBinDiff doesn39t werk met 'n wye terminale al. Maar die adresse geword vreemd met 'n wye terminale in elk geval, want jy het meer as 16 grepe per ry. â € Janus Troelsen 17 Oktober 12 by 14:22 Probeer verskil in die volgende kombinasie van zsh / bash proses vervanging en colordiff in CLI: - y wys jou verskille side-by-kant (opsioneel) xxd is CLI instrument om 'n hexdump uitset van skep die binêre lêer colordiff sal verskil uitset colorize (installeer via: sudo apt-get installeer colordiff) voeg - W200 om diff vir wyer afvoer as lêers is groot, voeg limiet (bv - l1000) vir elke xxd metode wat werk vir byte toevoeging / skrap Uitgawe vir 'n enkele NUL byte verwydering op die 100 byte van 'n groot lêer: As jy ook wil die ASCII-weergawe van die karakter te sien: Getoets op Ubuntu 14.04. Ek verkies od oor xxd omdat: dit is POSIX. xxd is nie (kom met Vim) het die'n om die adres kolom verwyder sonder awk. 'n Verwyder die adres kolom. Dit is belangrik anders al die lyne sou verskil na 'n greep Daarbenewens / verwydering. - w1 sit een byte per lyn, sodat verskil dit kan verteer. Dit is van kardinale belang om 'n greep per lyn, of anders elke lyn het na 'n skrap uit sou word van fase en verskil. Ongelukkig is dit nie POSIX, maar teenwoordig in GNU. - tx1 is die verteenwoordiging wat jy wil, verander om enige moontlike waarde, so lank as wat jy 1 byte per lyn te hou. v verhoed asterisk herhaling afkorting wat kan inmeng met die verskil plak d - - sluit aan by elke twee lyne. Ons moet dit omdat die blok en ASCII in aparte aangrensende lyne gaan. Geneem uit: StackOverflow / vrae / 8987257 / concatenating-elke-ander-lyn-met-die-volgende wat ons gebruik hakies () om bdiff definieer in plaas van om die omvang van die binneste funksie f beperk. sien ook: StackOverflow / vrae / 8426077 / hoe-om-te definieer-'n-funksie-binne-ander-funksie-in-bash geantwoord is nie 4 April 15 by 20:31 By die gebruik van hexdumps en teks verskil te binêre lêers te vergelyk, veral xxd. die toevoegings en verskuiwings van grepe geword verskuiwings in die aanspreek van wat dit moeilik maak om te sien kan maak. Hierdie metode vertel xxd om nie uitvoer adresse en uitset slegs een byte per lyn, wat op sy beurt presies wat grepe verander toon, bygevoeg, of verwyder is. Jy kan die adresse te vind later deur te soek vir die interessante rye van grepe op 'n meer normale hexdump (uitset van xxd first. bin). antwoord 22 April toe 15 12: 10How om die inhoud van twee of meer dopgehou vergelyk outomaties Baie van ons beland, onvermydelik, met so baie lêers en gidse dat dit onmoontlik is om hulle onder beheer te hou sonder 'n gespesialiseerde hulp. Gelukkig, as Siek wys jou in 'n oomblik, onder Linux is daar verskeie, baie doeltreffende oplossings vir hierdie probleem. Veelvuldige kopieë van baie lêers, regoor die rekenaar, afval ruimte, skep verwarring, en stadiger lessenaar index soos DocFetcher. Ek het reeds verduidelik hoe om uit te vind en verwyder die ongewenste ekstra kopieë hier. Wanneer dit tyd om skoon te maak van jou dopgehou en lêers kom, 'n algemene probleem opduik: hoe kan ek waar duplikaat lêers en gidse tussen verskeie dopgehou Die probleem is beide meer kompleks en veel meer algemeen as wat dit met die eerste oogopslag mag voorkom. 'N gids kan baie, baie vlakke van sub-gidse, elk met duisende lêers van alle soorte bevat. Probeer om uit te vind die hand van die verskille tussen twee gids bome soos dié kan neem dae. Een van die redes waarom jy nodig het om die verskille tussen dopgehou weet is, sodat jy kan seker maak dat al jou rugsteun werk soos verwag Wat gebeur as die outomatiese rugsteun proses wat jy elke dag uit te voer 'n fout Wat gebeur as 'n sektor van die eksterne ry (e), DVD's , of afgeleë rekenaar waaraan jy voortdurend al jou kosbare dopgehou skielik (en in stilte) gebreek Wil jy dit sien voordat eintlik hoef diegene rugsteun dit is die hoofrede om in staat wees om vinnig te vind of die inhoud van twee dopgehou verskil kopieer. Kom ons kyk hoe om dit maklik te maak. Outomatiese vergelyking Dit is belangrik om in staat wees om sekere tjeks outomaties hardloop uit 'n dop script. Veral as alles wat jy wil hê, is 'n vinnige ja of nee antwoord en outomatiese kennisgewings. Hier is 'n paar command line utilities wat jy kan gebruik as 'n basis vir skrifte dat sodanige tjeks uit te voer. Jy kan dan loop die skrifte óf 'n outomatiese cron jobs, of wanneer jy voel soos die nagaan indien daardie DVD of eksterne dryf is nogsteeds sonder foute. vind die pyp van opdragte: sal in red / tmp / filelistFOLDER n alfabeties geordende lys van al die lêers in gids, kompleet met die ooreenstemmende sub-gidse, bv iets soos hierdie: Running die pyp op meer dopgehou en vergelyk die ooreenstemmende lêer lyste sal al die verskille tussen hulle nie vind nie. Jy sal eers raaksien vermiste lêers, of dopgehou met stelle van lêers met verskillende name. Lêers met dieselfde name en in dieselfde submappen, maar met verskillende inhoud, sal nie wys in die lys. Tog, kan dit 'n baie vinnige manier om sekere inco sien wees. diff Diff word gewoonlik gebruik om twee lêers te vergelyk, maar kan veel meer as dit doen. Die opsies r en V maak dit werk r ecursively en Q uietly. dit is, net te noem verskille, wat is presies wat ons is op soek na: Soos jy kan sien, al die verskille tussen twee gids bome verskyn, word hulle lêers net in een van hulle, of lêers wat verskillend is. Selfs lêers wat, soos leddriver, teenwoordig in beide dopgehou is, maar dit nie regtig bestaan ​​nie, want hulle is skakels na ander lêers wat gekanselleer word, word gelys. Tel die aantal lyne wat gegenereer word deur so 'n aanroeping van verskil toon onmiddellik indien die twee bome verskil, soos in hierdie pseudo bash kode: rsync Rsync kan 'n verskil verslag wat jy kan ontleed en te gebruik op dieselfde manier as die een van verskil te produseer: die vier command line skakelaars r, v, C en N vertel rsync (kyk na die man bladsy vir meer inligting) om av erbose, r ecursive, c hecksum-gebaseerde sinchronisasie van die twee dopgehou uit te voer nie, maar slegs vir die show. - n. Trouens, vertoon wat rsync sou doen as jy het laat dit vry om die tweede gids 'n perfekte afskrif van die eerste een te maak. Die groot voordeel van rsync oor rdiff is dat die voormalige plaaslike dopgehou kan vergelyk met afgeleë kinders. Interaktiewe vergelyking Die command line is groot, maar nie die beste oplossings vir alle poste. Die programme wat ek reeds beskryf is ideaal om verskille sonder om te mors tyd. Bevestiging daardie verskille kan egter meer produktief met 'n grafiese, interaktiewe interface soos versmelting wees. Hierdie groot klein Python gereedskap, beskikbaar as binêre pakket vir 'n paar GNU / Linux verspreidings, kan 'n paar dinge te doen. Een daarvan is om gelyktydig te vergelyk met drie dopgehou. Nadat jy dit kies as in figuur A. smelt sal vertoon (Figuur B) wat lêers of gidse ontbreek, of is anders, in elkeen van hulle. Figuur A Figuur B Klik om te vergroten. Jy sal ook in staat wees om jou eie vergelyking filters te definieer, om u tjeks vinniger te maak: Figuur C toon die skepping, in die Redigeer-gtPreferences-gtFile Filters oortjie van versmelting van 'n foto filter dat slegs sal kyk na lêers met die. jpg of Jpeg uitbreiding. Figuur C Oor Marco Fioretti Marco Fioretti is 'n vryskutskrywer en onderwyser wie se werk fokus op die impak van 'n oop digitale tegnologie op die onderwys, etiek, burgerregte, en omgewingskwessies. Volle Bio Marco Fioretti is 'n vryskutskrywer en onderwyser wie se werk fokus op die impak van 'n oop digitale tegnologie op die onderwys, etiek, burgerregte, en omgewingskwessies.


No comments:

Post a Comment