Portál AbcLinuxu, 6. prosince 2021 15:50




Dotaz: Jak ulozit sourcnute soubory do jednoho?

30.9. 14:36 leos
Jak ulozit sourcnute soubory do jednoho?
Přečteno: 407×
Odpovědět | Admin
Dobry den. Mam bash script ktery do sebe nacita jine soubory s bash scripty. Poradili by jste mi jak nacist vsechny tyto soubory do jedineho souboru? Predem dekuji.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

30.9. 15:01 X
Rozbalit Rozbalit vše Re: Jak ulozit sourcnute soubory do jednoho?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Coze? Muzes to preformulavat srozumitelneji?
30.9. 15:59 leos
Rozbalit Rozbalit vše Re: Jak ulozit sourcnute soubory do jednoho?
Spustim soubor ktery obsahuje prikaz source nebo . pro nacteni dalsich scriptu/souboru. Potreboval bych vsechny tyto soubory nacist do toho hlavniho scriptu a ulozit do jednoho souboru. Ted mam program ktery obsahuje > 150 souboru a chci mit pouze jeden.
Jendа avatar 30.9. 16:37 Jendа | skóre: 77 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: Jak ulozit sourcnute soubory do jednoho?
Jediné skutečně funkční řešení bude nějak si hooknout source/. aby zalogovala, co načítá, případně sledovat, co se načítá, přes strace. A to kvůli tomu, že ten program se na základě načtených souborů může rozhodovat, jaké další bude načítat - takže to nejde vyhodnotit staticky.
30.9. 17:21 leos
Rozbalit Rozbalit vše Re: Jak ulozit sourcnute soubory do jednoho?
Co znamena "hooknout source/"? Muzes mi tu tvou myslenku trochu vice priblizit? Dekuji.
Jendа avatar 30.9. 19:04 Jendа | skóre: 77 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: Jak ulozit sourcnute soubory do jednoho?
Udělat, aby daná funkce při svém zavolání spustila svůj kód a až pak se vykonala. Podle konkrétního případu na který koukáš by mohlo jít například definovat funkci source2 a všechny výskyty source v původním zdrojáku nahradit za source2. Kdyby to nešlo, tak by sis třeba mohl patchnout bash, což je opruz. Co z toho bude potřeba udělat záleží na tom, jaká konkrétně je tvoje situace a jestli stačí nedokonalé jednoduché řešení.
Gréta avatar 1.10. 12:29 Gréta | skóre: 34 | blog: Grétin blogísek | Stockholm
Rozbalit Rozbalit vše Re: Jak ulozit sourcnute soubory do jednoho?

prolízt a naparsovat :O :O

hóóóóóóóódně jednoduchý py spojovadlo *.sh souborů :O :O

#!/usr/bin/env python3

# TODO: nehlídá to dělání 'cd'!!!!!!!!!
# taky neinterpretruje proměný kdyby třeba byly strčený do názvu tý cestičky ke spriptu!!!!! :O :O
def radek_obsahuje_import(radek):
    kusy = radek.split(" ")
    if len(kusy) < 2:
        return None
    if kusy[0] == "source" or kusy[0] == ".":
        return kusy[1].strip()

    return None

# rekurzivně prolezem soubor a natáhnem všecky bashovský importy
def zpracovat_soubor(nazev_souboru):
    vystup = []
    vstup_radky = []

    with open(nazev_souboru, "r") as soubor:
        vstup_radky = soubor.readlines()
        soubor.close()

    for radek in vstup_radky:
        imp = radek_obsahuje_import(radek)
        if imp is not None:
            print(f"importuju soubor: {imp}")
            obsah_dalsiho_souboru = zpracovat_soubor(imp)
            print(obsah_dalsiho_souboru)

            # odstranění shebangu (by asi jako stačilo zahazovat dycky prvni radek jestli je dycky nazacatku :O :O)
            # možná bude potřebovat naparsovat další veci různý jako stejný názvy různejch fcí etc :O :O
            for r in obsah_dalsiho_souboru:
                if "#!" in r:
                    obsah_dalsiho_souboru.remove(r)
                    break

            vystup += obsah_dalsiho_souboru
        else:
            print(radek)
            vystup.append(radek)

    return vystup


if __name__ == "__main__":

    vstupni_soubor = "vstup.sh"
    vystupni_soubor = "velikatatatatatanskej_vystupni_skript.sh"

    with open(vystupni_soubor, "w") as soubor:
        vystup = zpracovat_soubor(vstupni_soubor)
        if vystup is not None:
            soubor.writelines(vystup)
        soubor.close()
        print("hotovo!!!!!!!!!!!!!!!!!!!!!!!!!!!")

dodělej si sám :D

Jendа avatar 1.10. 17:11 Jendа | skóre: 77 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: Jak ulozit sourcnute soubory do jednoho?
To je současně strašně komplikované a současně to přestane fungovat jakmile bude source v podmínce, která se nevykoná, nebo se bude dělat source $proměnná, která se uvnitř kódu nějak vypočítala. V takových případech neexistuje jiná možnost, než to spustit a sledovat - můžete si zkusit ukázat, že kdyby se to umělo rozhodovat staticky, tak lze takovým programem řešit halting problem :-).
Gréta avatar 3.10. 19:20 Gréta | skóre: 34 | blog: Grétin blogísek | Stockholm
Rozbalit Rozbalit vše Re: Jak ulozit sourcnute soubory do jednoho?

nj neni to nic supr :D ale nevíme jak moc složitý ty jeho skripty sou je možný že jestli toje nějaká jednoduchá lepenina by mu to mohlo takle stačit :D

u toho hooknutí source by mu to taky teroreticky nemuselo nějakou podmínku/proměnou minout podle vokolností různejch + tim 'načíst do jednoho souboru' asi jako op myslel sloučit ty skripty do jedno víc věčího než jakoby jenom vypsat dosouboru  :O :O

Zdenek 'Mst. Spider' Sedlak avatar 5.10. 14:38 Zdenek 'Mst. Spider' Sedlak | skóre: 38 | blog: xMstSpider
Rozbalit Rozbalit vše Re: Jak ulozit sourcnute soubory do jednoho?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Kompletne to prepsat...

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.