abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 11:55 | Upozornění

    V neděli 11. října proběhne rotace klíče kořenové zóny. Podruhé v historii. Ondřej Filip na blogu CZ.NIC: "Pokud je pro Vás DNS protokol spíše výzva, ale přesto spravujete nějakou síť či DNS resolver, zkuste si jednoduchý test, který připravila firma Cloudflare na této adrese. Obzvláště zbystřit byste měli, pokud uvidíte nějaká červená políčka."

    Ladislav Hagara | Komentářů: 5
    dnes 09:55 | IT novinky

    Vláda Spojených států se rozhodla vyřadit americkou softwarovou společnost Microsoft a několik dalších velkých technologických podniků z programu, který umožňuje kvalifikovaným zahraničním pracovníkům získat povolení k trvalému pobytu. Oznámila to včera administrativa amerického prezidenta Donalda Trumpa. Opatření zdůvodnila rozsáhlým zneužíváním programu, který je dlouhodobě terčem kritiky ze strany Trumpových příznivců, neboť prý znevýhodňuje americké pracovníky.

    Ladislav Hagara | Komentářů: 12
    dnes 09:44 | IT novinky

    Datové centrum největší ruské technologické společnosti Jandex v Rjazaňské oblasti se stalo cílem dronového útoku a zastavilo provoz. Jandexu se někdy přezdívá „ruský Google“. Provozuje nejoblíbenější internetový vyhledávač v Rusku nebo aplikace pro objednávky jídla a taxi. Využívají jej desítky milionů lidí v rusky mluvících zemích.

    Ladislav Hagara | Komentářů: 11
    dnes 09:33 | Nová verze

    Francouzská společnost Mistral AI představila Mistral Large 4 (interně přezdívaný 'le Chonk', volně přeloženo 'pořádný macek'), 'open-weight multimodální hybridní instruct-and-reasoning model s architekturou granulárního MoE, nativně podporující více jak 160 jazyků'. Model má přes jeden bilión parametrů, z nichž při práci využívá 49 miliard, kontextové okno o délce milion tokenů a obrazový enkodér o 1,6 miliardách parametrů.

    … více »
    ❗Červivý Hřib krade❗ | Komentářů: 2
    dnes 03:22 | Nová verze

    Svobodný multiplatformní herní engine Bevy napsaný v Rustu byl vydán ve verzi 0.20. Díky 227 přispěvatelům.

    Ladislav Hagara | Komentářů: 0
    dnes 03:11 | Komunita

    Simon Long oznámil Raspberry Pi Desktop pro PC a Mac s Intelem postavený na aktualizovaném Debianu 13 Trixie. S klientem Raspberry Pi Connect pro vzdálenou správu. Ke stažení je vedle Raspberry Pi OS pro Raspberry Pi.

    Ladislav Hagara | Komentářů: 1
    včera 21:33 | Zajímavý projekt

    ESP32-C3 adblock přemění lacinou vývojovou desku ESP32‑C3 na samostatný DNS blokovač nejenom reklamních domén, minimalistickou alternativu k populárnímu Pi-hole. ESP32-C3 adblock místo objemných názvů domén ukládá jejich 40-bitové FNV-1a hashe do flash paměti, které pak binárně prohledává, kontrola jedné domény trvá přibližně 10 milisekund. Blocklist pojme až 537 tisíc domén a lze jej spravovat přes webové rozhraní. Projekt zatím

    … více »
    ❗Červivý Hřib krade❗ | Komentářů: 0
    včera 21:00 | Zajímavý software

    ArtCraft je sada open source aplikací pro práci s obrázky a videi "inspirovaných" aplikacemi od Adobe. Napsaných v Rustu. Pro MacOS, Windows i Linux. Běží také ve webovém prohlížeči. Aktuálně se jedná o 7 aplikací: PhotoCraft (Photoshop), VectorCraft (Illustrator), FilmCraft (Premiere Pro), LightCraft (Lightroom), PdfCraft (Acrobat), EffectCraft (After Effects) a DesignCraft (InDesign). Zdrojové kódy jsou k dispozici na GitHubu.

    Ladislav Hagara | Komentářů: 8
    včera 16:33 | Zajímavý software

    Strands Decider 2B je malý open-source model s 2 miliardami parametrů, určený k rychlé klasifikaci vstupů a rozhodování mezi možnostmi, generující odpovědi ve stylu modelu Jev. Strands dosáhl přibližně 72% shody s Jevem na veřejné testovací sadě JevBench (tento benchmark pochopitleně nepředstavuje přímé srovnání s modelem Jev). Zdrojové kódy jsou k dispozici na GitHubu pod licencí Apache-2.0, váhy modelu na Hugging Face.

    ❗Červivý Hřib krade❗ | Komentářů: 4
    včera 16:22 | Upozornění

    Ve věku 90 let zemřela americká softwarová inženýrka Margaret Hamiltonová, která vedla tým, jenž vyvíjel letový software pro program Apollo amerického Národního úřadu pro letectví a vesmír (NASA).

    Ladislav Hagara | Komentářů: 10
    Které desktopové prostředí na Linuxu používáte?
     (9%)
     (7%)
     (4%)
     (21%)
     (29%)
     (8%)
     (5%)
     (2%)
     (14%)
     (20%)
    Celkem 2820 hlasů
     Komentářů: 31, poslední 13.8. 00:27
    Rozcestník
    Štítky: není přiřazen žádný štítek

    Dotaz: Objasnění kódu

    2.8.2012 22:33 MM
    Objasnění kódu
    Přečteno: 910×
    Ahoj, nemohl by mi to co ty dva řádky dělají někdo přeložit do češtiny? :-( Děkuji
    tempfile=`tempfile 2>/tmp/null` || tempfile=/tmp/test$$
    trap "rm -f $tempfile" 0 1 2 5 15

    Odpovědi

    kozzi avatar 2.8.2012 23:05 kozzi | skóre: 55 | blog: vse_o_vsem | Pacman (Bratrušov)
    Rozbalit Rozbalit vše Re: Objasnění kódu

    tak presne nevim, ale prvni radek se pokusi nastavit do promenne docasny nazev souboru pomoci prikazu tempfile, presmerovava error vystup, pokud se to nepovede, naplni promennou tempfile cestou /temp/test<pid>. Potom se spusti prikaz trap, ktery neznam ale manual by mel napomoci. Asi to dela neco ze v pripade ze nastane jeden ze signalu 0 1 2 5 nebo 15 tak provede akci "rm -f atd". Ale opravdu jen hadam

    Linux je jako mušketýři "jeden za všechny, všichni za jednoho"
    3.8.2012 08:19 myšák | skóre: 26 | blog: EmentuX | Ostrava
    Rozbalit Rozbalit vše Re: Objasnění kódu
    Přesně tak. Příkaz trap provede to, co je v uvozovkách za ním - v tomto případě odstraní ten dočasný soubor, pokud odchytí některý ze signálů uvedených těmi čísly na konci. Seznam signálů tady:
    $ kill -l
     1) SIGHUP	 2) SIGINT	 3) SIGQUIT	 4) SIGILL	 5) SIGTRAP
     6) SIGABRT	 7) SIGBUS	 8) SIGFPE	 9) SIGKILL	10) SIGUSR1
    11) SIGSEGV	12) SIGUSR2	13) SIGPIPE	14) SIGALRM	15) SIGTERM
    16) SIGSTKFLT	17) SIGCHLD	18) SIGCONT	19) SIGSTOP	20) SIGTSTP
    21) SIGTTIN	22) SIGTTOU	23) SIGURG	24) SIGXCPU	25) SIGXFSZ
    26) SIGVTALRM	27) SIGPROF	28) SIGWINCH	29) SIGIO	30) SIGPWR
    31) SIGSYS	34) SIGRTMIN	35) SIGRTMIN+1	36) SIGRTMIN+2	37) SIGRTMIN+3
    38) SIGRTMIN+4	39) SIGRTMIN+5	40) SIGRTMIN+6	41) SIGRTMIN+7	42) SIGRTMIN+8
    43) SIGRTMIN+9	44) SIGRTMIN+10	45) SIGRTMIN+11	46) SIGRTMIN+12	47) SIGRTMIN+13
    48) SIGRTMIN+14	49) SIGRTMIN+15	50) SIGRTMAX-14	51) SIGRTMAX-13	52) SIGRTMAX-12
    53) SIGRTMAX-11	54) SIGRTMAX-10	55) SIGRTMAX-9	56) SIGRTMAX-8	57) SIGRTMAX-7
    58) SIGRTMAX-6	59) SIGRTMAX-5	60) SIGRTMAX-4	61) SIGRTMAX-3	62) SIGRTMAX-2
    63) SIGRTMAX-1	64) SIGRTMAX
    Je nesmírně těžké být idiotem, konkurence je obrovská...
    3.8.2012 08:38 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Objasnění kódu

    Ještě dodám, že "signál 0" v tomto kontextu znamená normální ukončení skriptu.

    Jinak v zájmu toho, kdo má ten skript používat, doufám, že to /tmp/null je ve skutečnosti jen špatně opsané /dev/null. A ten "plán B" taky vypadá dost nebezpečně.

    3.8.2012 10:06 MM
    Rozbalit Rozbalit vše Re: Objasnění kódu
    Hm, díky za pomoc, ale to mi chcete říct, že bych měl za každý příkaz dávat 2>/dev/null ?
    mkdir /home/aaa 2>/dev/null
    cat /home/virt/doc/index.php 2>/dev/null
    ls /home/aaa 2>/dev/null
    atd.. ??
    
    A ten "plán B" taky vypadá dost nebezpečně.
    to jako tohle? tempfile=/tmp/test$$ a co konkrétně?
    3.8.2012 10:11 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Objasnění kódu
    Hm, díky za pomoc, ale to mi chcete říct, že bych měl za každý příkaz dávat 2>/dev/null ?

    Ne, jen za takový, u kterého chcete zahodit případný chybový výstup.

    to jako tohle? tempfile=/tmp/test$$ a co konkrétně?

    Vysvětloval jsem to např. tady.

    3.8.2012 10:29 MM
    Rozbalit Rozbalit vše Re: Objasnění kódu
    Ale pořád nerozumím jak to přesně myslíte, počet nahodných znaků je málo?
    tempfile=$(mktemp /tmp/result.XXXXXXXXXXXXXXXXX)
    #vytvoří /tmp/result.4bYDvkblOsfKPTMDR
    
    tempfile=/tmp/test$$
    # vytvoří /tmp/test25723
    tudíž i při použití test$$ by byla velká náhoda aby se do toho někdo trefil, ne?

    Jinak tento zápis
    tempfile=$(mktemp /tmp/result.XXXXXXXXXXXXXXXXX)
    je totéž jako tento?
    tempfile=`mktemp /tmp/result.XXXXXXXXXXXXXXXXX`
    3.8.2012 10:32 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Objasnění kódu
    Problém je především v tom, že ty znaky nejsou ani zdaleka náhodné. Dva dolary expandují na PID shellu, který ten skript provádí, a PID se procesům přiřazuje velmi deterministickým způsobem. Nemluvě o tom, že principiálně možných hodnot není (při defaultní konfiguraci) zase až tak moc, takže nelze vyloučit ani to, že si tam útočník ty symlinky udělá pro všechny.
    3.8.2012 10:51 MM
    Rozbalit Rozbalit vše Re: Objasnění kódu
    Už rozumím, díky za objasnění, a ta druhá část otázky?

    a můžu použít místo tohoto
    tmp=$(mktemp /tmp/result.XXXXXXXXXXXXXXXXX)
    
    mkdir /home/aaa 2>>$tmp
    cat /home/virt/doc/index.php 2>>$tmp
    ls /home/aaa 2>>$tmp
    tohle? Bude účel stejny?
    function foo () {
     tmp=$(mktemp /tmp/result.XXXXXXXXXXXXXXXXX)
    
     mkdir /home/aaa
     cat /home/virt/doc/index.php
     ls /home/aaa
    }
    
    foo 2>>$tmp 
    
    Díky
    3.8.2012 11:03 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Objasnění kódu

    1. V bashi je to totéž, u některých starších shellů by $(...) nemuselo fungovat. Na druhou stranu, varianta s $(...) je IMHO trochu přehlednější, zejména pokud chcete příkazové substituce vnořovat.

    2. Ta druhá varianta nebude vůbec fungovat, protože přesměrování provedete ještě předtím, než proměnné tmp přiřadíte hodnotu. Musel byste řádek 2 přesunout někam na "8.5".

    3.8.2012 11:10 MM
    Rozbalit Rozbalit vše Re: Objasnění kódu
    ano, ano, to jsem se uklepl, tmp=$(mktemp /tmp/result.XXXXXXXXXXXXXXXXX) musí byt mimo tu funkci, ale tady šlo spéše o to jestli to bude fungovat ohledně toho vypsání chyb. Jelikož třeba tohle určitě nefunguje, v souboru nic nebude
    tmp=$(mktemp /tmp/result.XXXXXXXXXXXXXXXXX)
    
    function aaa () {
    #tady bude chyba
    }
    
    function bbb () {
    aaa
    }
    
    bbb 2> $tmp
    
    3.8.2012 11:28 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Objasnění kódu

    Mně to funguje:

    mike@unicorn:~> cat x
    #!/bin/bash
    
    tmp=out
     
    function aaa () {
        echo ahoj >&2
    }
     
    function bbb () {
        aaa
    }
     
    bbb 2> $tmp
    
    mike@unicorn:~> rm -f out
    mike@unicorn:~> ./x
    mike@unicorn:~> cat out
    ahoj
    
    3.8.2012 12:03 MM
    Rozbalit Rozbalit vše Re: Objasnění kódu
    :-D no tohle ano, jelikož to máte napsáno jinak než já, v tom případě je zcela bezpředmětné spouštět funkci takto
    bbb 2> $tmp
    když ve funkci aaa () máte echo ahoj >&2, ne? Jinak teď se dívám že používate něco jiného, patrně jistě lepšího než já..

    jaký v tom je rozdíl? Díky
    echo ahoj >&2
    echo ahoj 2>/$tmp
    3.8.2012 12:22 Kit
    Rozbalit Rozbalit vše Re: Objasnění kódu
    Je v tom podstatný rozdíl. Měl by ses konečně podívat do manuálu.
    echo ahoj 2>/$tmp
    mi nedává smysl, protože echo neprodukuje chybový výstup. Ten se dá vyrobit právě příkazem
    echo ahoj >&2
    3.8.2012 16:01 MM
    Rozbalit Rozbalit vše Re: Objasnění kódu
    Je v tom podstatný rozdíl. Měl by ses konečně podívat do manuálu....Ten se dá vyrobit právě příkazem
    echo ahoj >&2
    To jste mi to tedy vysvětlil.. ;-) Spíše bych měl programování v bash definitivně zabalit, jelikož neobsahuje základní potřeby programátora..
    3.8.2012 16:21 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Objasnění kódu
    Ne že by byl jazyk Bourn shellu nějak příliš logicky a systematicky navržený (koneckonců je to primárně shell a ne programovací jazyk), ale obávám se, že v tom problém nebude. Problém je spíš v tom, že používáte něco, čemu nerozumíte, a co hůř, ani se tomu porozumět nesnažíte.
    frEon avatar 3.8.2012 16:44 frEon | skóre: 40 | Praha
    Rozbalit Rozbalit vše Re: Objasnění kódu
    a ktere ze tvych zakladnich potreb to neuspokojuje?

    jinak kazdy jazyk je dobry na neco jinyho, na to k cemu je bash urceny je imho dobry az az.
    Talking about music is like dancing to architecture.
    3.8.2012 20:44 Kit
    Rozbalit Rozbalit vše Re: Objasnění kódu
    Každý unixový program má standardní vstup, standardní výstup a standardní chybový výstup. ">&2" přesměruje standardní výstup do standardního chybového výstupu. Asi jsi to v manuálu přehlédl. Je to jedno ze základních pravidel.
    3.8.2012 23:38 MM
    Rozbalit Rozbalit vše Re: Objasnění kódu
    Super, tak že máme
    1 vstup
    1 standardní výstup
    1 standardní chybový výstup
    Pokud by byla pravda to co píšete (bez urážky), že: >&2 přesměruje standardní výstup do standardního chybového výstupu a já bych tento výstup přesměroval jak píšete, tak bych přece nic na obrazovce neviděl, ne?

    Čili tohle je evidentně špatně (potom ale nevím proč to funguje :-()
    ERROR_LOG=$(mktemp /tmp/tmp.XXXXXXXXXXXXXXXXX)
    (eval ${TOKS[1]}) 2>> $ERROR_LOG
    a takto je to dobře ?
    ERROR_LOG=$(mktemp /tmp/tmp.XXXXXXXXXXXXXXXXX)
    (eval ${TOKS[1]}) >&2 $ERROR_LOG
    Děkuji..
    3.8.2012 23:47 Kit
    Rozbalit Rozbalit vše Re: Objasnění kódu
    Standardní chybový výstup se standardně vypisuje na obrazovce. Je to proto, aby se chybová hlášení nevypisovala do výstupních dat. To je také v manuálu.

    Předpoklad byl chybný, zbytek tedy nemá smysl komentovat.
    4.8.2012 00:16 MM
    Rozbalit Rozbalit vše Re: Objasnění kódu
    Standardní chybový výstup se standardně vypisuje na obrazovce.
    Souhlasím..
    Je to proto, aby se chybová hlášení nevypisovala do výstupních dat.
    Taky souhlasím..
    To je také v manuálu.
    Nevím, neumím americky...
    Předpoklad byl chybný, zbytek tedy nemá smysl komentovat.
    Má, pořád nevím co je tedy to 2>. Taky je ale otázkou je, co je myšleno tím standardním výstupem. Chápu to tedy dobře?

    Když použiju echo "Nazdar dědku" předpokládám, že se to odešle na standardní výstup, čili obrazovka, ok? Když použiju ls /home, je to taky odesláno do standardního výstupu čili na obrazovku, pokud ale použiju ls /hhome a dostanu na obrazovku ls: cannot access /homed: No such file or directory tak se nejedná o standardní výstup ale o standardní chybový výstup, ok? No a když ten příkaz použiju takto ls /hhome >&2 /tmp/error.log tak neuvidím na obrazovce vůbec nic, taky ok? Díky

    4.8.2012 00:37 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Objasnění kódu
    Nevím, neumím americky...

    A to je snad náš problém, súdruh Haluška?

    4.8.2012 00:07 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Objasnění kódu
    Pokud by byla pravda to co píšete (bez urážky), že: >&2 přesměruje standardní výstup do standardního chybového výstupu a já bych tento výstup přesměroval jak píšete, tak bych přece nic na obrazovce neviděl, ne?

    Však se také v tom mém příkladu na terminál nic nevypsalo.

    4.8.2012 00:18 MM
    Rozbalit Rozbalit vše Re: Objasnění kódu
    No dyť ano, proto jste mě navedl na to, že já dělám něco/všechno špatně.. jelikož jsem používal 2>/tmp/foo a fungovalo to.. ;)
    4.8.2012 00:36 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Objasnění kódu

    Začínám nějak tápat v tom, jestli jsem žádal o radu já vás nebo vy nás. Začínám mít pocit, že my jsme všichni blbci, kteří tomu nerozumíme a prosíme vám, abyste nám poradil… :-(

    A teď poslední pokus vám vysvětlit, co se děje. Jestliže uvnitř funkce použijete

       echo ahoj >&2
    

    pak se standardní výstup (deskriptor 1) toho příkazu připojí k chybovému (deskriptor 2). Jetliže tu funkci pak zavoláte jako

      funkce 2>/tmp/foo
    

    pak se její chybový výstup (což je to slovo ahoj) přesměruje do příslušného souboru.

    4.8.2012 00:58 MM
    Rozbalit Rozbalit vše Re: Objasnění kódu
    Ptám se pořád já, jelikož to fakt nemůžu pochopit proč tohle je špatně
    mkdir /home/foo 2>/tmp/log
    a tohle je dobře
    mkdir /home/foo >2& /tmp/log
    4.8.2012 01:20 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Objasnění kódu
    Není žádné "dobře" a "špatně". Prostě každá ta konstrukce znamená něco jiného (tedy pokud byste tu druhou napsal správně). Co znamenají, nebudu znovu opisovat, protože už jsem to jednou vysvětlil (viz odpověď z 00:36).
    pavlix avatar 4.8.2012 01:56 pavlix | skóre: 54 | blog: pavlix
    Rozbalit Rozbalit vše Re: Objasnění kódu
    Přečíst knížku a v poradně prudit až potom :).
    Já už tu vlastně ani nejsem. Abclinuxu umřelo.
    4.8.2012 08:34 MM
    Rozbalit Rozbalit vše Re: Objasnění kódu
    Proč prudit? S čeho tak ususzujete? :(
    4.8.2012 08:56 Kit
    Rozbalit Rozbalit vše Re: Objasnění kódu
    Z toho, že se neustále a opakovaně vyptáváš na úplné základy a nedohledáš si zbytek. Jako kdybys spoléhal na to, že ti to nalejeme do hlavy.

    Přesměrování vstupu, výstupu a spojování programů do kolon jsou úplné základy, které se týkají všech unixových programů. Proto by sis to měl nejprve nalistovat v českém manuálu a pak se teprve ptát na nejasnosti.
    pavlix avatar 4.8.2012 12:00 pavlix | skóre: 54 | blog: pavlix
    Rozbalit Rozbalit vše Re: Objasnění kódu
    Ber to slovo z trochou nadsázky. Začátečnické dotazy jsou v poradně v pořádku, ale až po troše toho vlastního výzkumu a vlastního vzdělávání. Čili, pokud ti můžu poradit, jak si získat náklonnost případných rádců, tak:

    NE: Vyptávat se na věci, o kterých vůbec nic nevíš a nepřečetl sis ani kus knížky, ani kus manuálu.

    ANO: Ptát se na jednotlivé věci, které se přes veškerou snahu podle knížky nebo manuálu nepovedly. Doptat se na věci, které v manuálu nejsou nebo z něj nejsou jasné.

    Dokonce je dobré takovou snahu uvést včetně zdroje, tedy odkazu na manuál nebo názvu knihy, ze které čerpáš, aby případní rádci věděli z čeho vycházíš.
    Já už tu vlastně ani nejsem. Abclinuxu umřelo.
    3.8.2012 12:26 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Objasnění kódu
    když ve funkci aaa () máte echo ahoj >&2, ne?

    A v čem se to podle vás liší od kteréhokoli jiného příkazu, který něco napíše na chybový výstup? Zkuste si tam dát něco jiného a dopadne to stejně.

    3.8.2012 10:15 Ash | skóre: 53
    Rozbalit Rozbalit vše Re: Objasnění kódu
    to mi chcete říct, že bych měl za každý příkaz dávat 2>/dev/null ?

    A proč byste to dělal?

    Založit nové vlákno • Nahoru

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

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.