Shell skript na tvorbu patchů

Kuba

Shell skript na tvorbu patchů
« kdy: 10. 03. 2011, 01:50:17 »
Zdravím vás a snad vás nepohorším,
    rád bych požádal o pomoc někoho zběhlého v shell skriptování, docela nedávno jsem začal pracovat s
    linuxem a musím řešit následující problém: Mám za úkol vytvořit takový "patch maker" - program, který 
    porovná dva adresáře a vytvoří jeden jejich rozdílový adresář. Komplikuje mi to požadavek na přenositelnost 
    mezi různými druhy shellů a navíc mám za úkol ošetřit výskyt souboru se stejným názvem, jako má jeden 
    adresář v tom druhém porovnávaném ( /cmp1/soubor  a /cmp2/soubor/). samozřejmě po nikom nechci řešení,   
    ale byl bych vděčný za nějaké rady ("man diff" není rada, s diffem jsem toho zkoušel hodně, ale problém
    soubor vs. adresář nejspíš nevyřeší). Děkuji za každou upřímnou radu.                       
« Poslední změna: 10. 03. 2011, 21:08:20 od Petr Krčmář »


NA

Re: shell skriptík
« Odpověď #1 kdy: 10. 03. 2011, 07:30:05 »
Máš na mysli něco jako sync?

chsajarsa

Re: shell skriptík
« Odpověď #2 kdy: 10. 03. 2011, 08:55:04 »
adresar zjistis treba z vypisu ls -l, kde adresar ma na zacatku d. Ja bych to delal asi takhle:
1) pomoci find bych nechal vylistovat kopletni adresarvou strukturu vcetne souboru(find <prvni_adr> > adr1 && find <druhy_adr> > adr2).
2) pokud mas hledat i rozdily mezi jednotlivejma souborama, tak asi jeste budes muset pridat diff mezi tema ze stejnym nazvem nebo hashe nebo tak
3) pak ti staci uz jen sort a uniq nad souborama adr1 a adr2 a najit si ve kterem adresari jsou a jestli to je soubor nebo adresar
4) ted uz to jen vykopirovat

Samozdrejme si s tim chce jest hodne pohrat, napadlo me to z hlavy, aniz bych to zkousel, takze tam mozna bude nejaky drobny zadrhel.

smajl

Re: shell skriptík
« Odpověď #3 kdy: 10. 03. 2011, 09:57:17 »
$ diff -q /etc/java-6-openjdk /etc/java-6-sun
Only in /etc/java-6-openjdk: accessibility.properties
Files /etc/java-6-openjdk/calendars.properties and /etc/java-6-sun/calendars.properties differ
Files /etc/java-6-openjdk/content-types.properties and /etc/java-6-sun/content-types.properties differ
Files /etc/java-6-openjdk/flavormap.properties and /etc/java-6-sun/flavormap.properties differ
Only in /etc/java-6-openjdk: fontconfig.bfc
Files /etc/java-6-openjdk/fontconfig.properties and /etc/java-6-sun/fontconfig.properties differ
Only in /etc/java-6-openjdk: images
Files /etc/java-6-openjdk/jvm.cfg and /etc/java-6-sun/jvm.cfg differ
Common subdirectories: /etc/java-6-openjdk/management and /etc/java-6-sun/management
Only in /etc/java-6-openjdk: psfontj2d.properties
Only in /etc/java-6-openjdk: psfont.properties.ja
Common subdirectories: /etc/java-6-openjdk/security and /etc/java-6-sun/security
Files /etc/java-6-openjdk/sound.properties and /etc/java-6-sun/sound.properties differ
Only in /etc/java-6-openjdk: swing.properties

BruXy

Re: shell skriptík
« Odpověď #4 kdy: 10. 03. 2011, 11:27:05 »
Velice jednoduchy zpusob je pouzit rsync v --dry-mode kdy pouze vypise, ktere soubory se lisi a s timto seznamem pracovat dal.

Prenositelnost: napsat to v posix shellu a nepouzivat zadna frikulinska rozsireni Bashe, dashe a podobne :)


Franta

Re: shell skriptík
« Odpověď #5 kdy: 10. 03. 2011, 13:23:14 »
Zdravím vás a snad vás nepohorším,
    rád bych požádal o pomoc někoho zběhlého v shell skriptování, docela nedávno jsem začal pracovat s
    linuxem a musím řešit následující problém: Mám za úkol vytvořit takový "patch maker" - program, který 
    porovná dva adresáře a vytvoří jeden jejich rozdílový adresář. Komplikuje mi to požadavek na přenositelnost 
    mezi různými druhy shellů a navíc mám za úkol ošetřit výskyt souboru se stejným názvem, jako má jeden 
    adresář v tom druhém porovnávaném ( /cmp1/soubor  a /cmp2/soubor/). samozřejmě po nikom nechci řešení,   
    ale byl bych vděčný za nějaké rady ("man diff" není rada, s diffem jsem toho zkoušel hodně, ale problém
    soubor vs. adresář nejspíš nevyřeší). Děkuji za každou upřímnou radu.                       

Neměl bys ty školní projekty dělat sám? Jak jinak se to chceš naučit? Takhle tu vysokou nedoděláš....

Kuba

Re: shell skriptík
« Odpověď #6 kdy: 10. 03. 2011, 15:11:25 »
Všem děkuju za příspěvky, pomocí těch výpisů už jsem to pomalu začal řešit a o rsyncu jsem nevěděl, budu muset zjistit, jestli to vůbec smím použít. Zní to až moc jednoduše.

Franta < "kdo hledá, najde", ale kdo se nebojí ptát, najde víc.. Nemysli si, že po založení tohoto topicu jsem založil ruce na hrudi a přestal s veškerou práci. Pokud ale o shellovém skriptování něco víš, snad také víš, jak je to rozsáhlá oblast.

Kuba

Re: Shell skript na tvorbu patchů
« Odpověď #7 kdy: 11. 03. 2011, 07:30:10 »
Tak zřejmě jsem se k něčemu dopracoval. Požadovaných výsledků jsem dosáhl pomocí nástrojů sort a uniq, případně diff pro konkrétní rozdíly..   :D ale je to bolest na FITu s absolvovaným gymplem bez jakéhokoliv programování..