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í
×
včera 20:44 | Nová verze

Po více než 3 měsících vývoje od vydání verze 238 oznámil Lennart Poettering vydání verze 239 správce systému a služeb systemd (GitHub, NEWS).

Ladislav Hagara | Komentářů: 2
včera 15:00 | Nová verze

Bylo oznámeno vydání nové stabilní verze 1.28 a beta verze 1.29 open source textového editoru Atom (Wikipedie). Přehled novinek i s náhledy v příspěvku na blogu. Podrobnosti v poznámkách k vydání. Atom 1.28 je postaven na Electronu 2.0.

Ladislav Hagara | Komentářů: 1
včera 14:00 | Nová verze

Byla vydána nová verze 2.3.0 multiplatformního svobodného frameworku pro zpracování obrazu G'MIC (GREYC's Magic for Image Computing, Wikipedie). Přehled novinek i s náhledy na PIXLS.US.

Ladislav Hagara | Komentářů: 0
včera 13:00 | Komunita

Akční RPG hra Shadowrun Returns Deluxe, kterou lze hrát i na Linuxu je nyní zdarma na Humble Bundle. Hra vyšla díky kampani na Kickstarteru v roce 2013.

tajny_007 | Komentářů: 0
včera 01:00 | Nová verze

Byla vydána verze 1.27 programovacího jazyka Rust (Wikipedie). Z novinek je nutno zmínit podporu SIMD (Single Instruction Multiple Data). Podrobnosti v poznámkách k vydání. Vyzkoušet Rust lze například na stránce Rust by Example.

Ladislav Hagara | Komentářů: 5
21.6. 16:22 | IT novinky

CEO Intelu Brian Krzanich rezignoval (tisková zpráva). Oficiálním důvodem je "vztah na pracovišti". S okamžitou platností se dočasným CEO stal Robert Swan.

Ladislav Hagara | Komentářů: 37
21.6. 14:11 | Komunita

Konsorcium Linux Foundation ve spolupráci s kariérním portálem Dice.com zveřejnilo 2018 Open Source Jobs Report. Poptávka po odbornících na open source neustále roste.

Ladislav Hagara | Komentářů: 1
21.6. 12:44 | Zajímavý článek

Na stránkách linuxové distribuce Ubuntu Studio byla publikována příručka Ubuntu Studio Audio Handbook věnována vytváření, nahrávaní a úpravě zvuků a hudby nejenom v Ubuntu Studiu. Jedná se o živý dokument editovatelný na jejich wiki.

Ladislav Hagara | Komentářů: 0
21.6. 12:11 | Zajímavý projekt

Společnost Red Hat koupila na konci ledna společnost CoreOS stojící mimo jiné za odlehčenou linuxovou distribucí optimalizovanou pro běh kontejnerů Container Linux. Matthew Miller, vedoucí projektu Fedora, představil v článku na Fedora Magazine nový podprojekt Fedory s názvem Fedora CoreOS. Fedora CoreOS má být to nejlepší z Container Linuxu a Fedora Atomic Hostu. Podrobnosti v často kladených otázkách (FAQ) a v diskusním fóru.

Ladislav Hagara | Komentářů: 0
21.6. 08:00 | Nová verze

Po více než devíti měsících vývoje od vydání verze 11.0 byla vydána verze 12.0 zvukového serveru PulseAudio. Přehled novinek v poznámkách k vydání.

Ladislav Hagara | Komentářů: 12
Jak čtete delší texty z webových stránek?
 (78%)
 (22%)
 (4%)
 (7%)
 (2%)
 (10%)
Celkem 244 hlasů
 Komentářů: 39, poslední 21.6. 17:44
    Rozcestník
    Štítky: není přiřazen žádný štítek


    Vložit další komentář
    Max avatar 10.1. 19:35 Max | skóre: 66 | blog: Max_Devaine
    Rozbalit Rozbalit vše Re: Shellová zábava
    Tak o dashi se ví, že toho moc neumí a není na takové úrovni jako bash. Ostatně to myslím nebyl ani jeho záměr.
    Každopádně, jaký smysl má zápis "V=1 f" kromě testování syntaxe různých interpretů?

    Jinak odpověď na to, proč symlink "/bin/sh -> /bin/bash" dává jiný výsledek, najdeš v manpage, cituji :

    "If bash is invoked with the name sh, it tries to mimic the startup behavior of historical versions of sh as closely as possible, while conforming to the POSIX standard as well."

    Zdar Max
    Měl jsem sen ... :(
    10.1. 20:04 Marcel Šebek | skóre: 21 | blog: c
    Rozbalit Rozbalit vše Re: Shellová zábava
    Hm, zajímavý, tušil jsem, že bash se o něco takového bude pokoušet, ale man jsem důkladně nepročítal.

    Jen tak mimochodem, na problém jsem paradoxně přišel tím, že skript mi nefungoval v bashi, ale v dashi fungoval.
    Real programmers don't comment their code. If it was hard to write, it should be hard to read.
    10.1. 20:06 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Shellová zábava
    Ten dash se takhle podivně chová i v případě, že je tam místo funkce normální (ne builtin) příkaz?
    10.1. 23:03 Marcel Šebek | skóre: 21 | blog: c
    Rozbalit Rozbalit vše Re: Shellová zábava
    Ne, pro příkaz (builtin se dash chová normálně, jen pro funkci to ponechá hodnotu nastavenou. Problém je, že ze syntaxe není vždy na první pohled jasné, zda jde o funkci nebo o příkaz.
    Real programmers don't comment their code. If it was hard to write, it should be hard to read.
    10.1. 21:24 Odin
    Rozbalit Rozbalit vše Re: Shellová zábava
    Jak jste sam napsal, problem to neni. Proste to nepouzivejte a muzete v klidu spat.
    skunkOS avatar 11.1. 11:19 skunkOS | skóre: 26 | blog: Tak nějak
    Rozbalit Rozbalit vše Re: Shellová zábava
    Přesně toto je popsáno i v Advanced Bash Scripting Guide, který je imho perfektní pro naučení Bashe.
    http://martinrotter.github.io
    10.1. 20:04 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Shellová zábava
    Každopádně, jaký smysl má zápis "V=1 f" kromě testování syntaxe různých interpretů?

    Hodně často se to používá např. v konstrukcích typu

      ... | LC_COLLATE=C sort
    

    Obecně v situaci, kdy potřebujete spustit konkrétní příkaz s určitou hodnotou určité proměnné, ale nechcete ji nastavovat (jako exportovanou) v environmentu shellu, okdud by ji zdědily i všechny ostatní příkazy.

    To chování dashe (jestli se tak opravdu chová a nebyla to nějaká jiná chyba) je hodně nešťastné a obávám se, že to rozbije hodně skriptů.

    11.1. 03:24 pc2005 | skóre: 36 | blog: GardenOfEdenConfiguration | liberec
    Rozbalit Rozbalit vše Re: Shellová zábava
    +1 Jo už jsem to chtěl taky napsat.

    Já teda nejčastěji používám LD_LIBRARY_PATH="něco" program. Třeba ve steamu je to všude.

    btw Ještě u toho sortu by mohl být rozdíl mezi funkcí bashe a externím programem, ale stejné chování u obou je prostě logické.
    11.1. 11:11 oryctolagus | skóre: 29 | blog: Untitled
    Rozbalit Rozbalit vše Re: Shellová zábava
    Každopádně, jaký smysl má zápis "V=1 f" kromě testování syntaxe různých interpretů?
    Tenhle zápis mi přijde jako naprosto běžná věc, například CC=/nekde/nejaky/cc make . Něbo máš na mysli specificky při používání shellových funkcí (ie. ne programů)? V takovém případě to je, pravda, asi trochu neobvyklé...
    Max avatar 11.1. 14:26 Max | skóre: 66 | blog: Max_Devaine
    Rozbalit Rozbalit vše Re: Shellová zábava
    Ano, myslel jsem v případě použití shellové fce, ale ono to smysl dává, jen to nevídám, tak mi to přišlo divný.
    Zdar Max
    Měl jsem sen ... :(
    10.1. 21:10 snajpa | skóre: 20 | blog: snajpuv_blocek | Brno
    Rozbalit Rozbalit vše Re: Shellová zábava
    Jsem jediny, kteremu v kontextu poslednich udalosti mrazi v zadech pri cteni "narazil jsem na podivne chovani..."? :-D
    --- vpsFree.cz --- Virtuální servery svobodně
    10.1. 22:13 mimi.vx | skóre: 37 | blog: Mimi.VX | Praha
    Rozbalit Rozbalit vše Re: Shellová zábava

    j,

     

    na vetsinu poslednich veci se neprislo nahodou ale celkem dost usilovnou praci velmi dobre placenych lidi

    USE="-gnome -kde";turris
    10.1. 23:12 marbu | skóre: 29 | blog: hromada | Brno
    Rozbalit Rozbalit vše Re: Shellová zábava
    Ne :)
    I think warning here is a bug. The biggest cloud service provider. There is no point in being so cool in a cold world.
    10.1. 21:22 Odin
    Rozbalit Rozbalit vše Re: Shellová zábava
    Ehm a co je divneho na tom, ze si to kazdy shell implementuje po svem, kdyz, jak jste si ostatne sam dohledal, standard toto chovani nedefinuje? Myslim, ze to snad ani nestoji za ten blogpost. Ono vubec obecne pouzivat globalni promenne neni dobry napad a to nikdy a v zadnem normalnim jazyku.
    10.1. 22:01 mimi.vx | skóre: 37 | blog: Mimi.VX | Praha
    Rozbalit Rozbalit vše Re: Shellová zábava

    a v tomto pripade se jedna ciste jen o  lokalni definici promene pro konkretni volani funkce f bez zasahu do env..

    takze bash se narozdil od dashe chova logicky

    USE="-gnome -kde";turris
    10.1. 22:48 Odin
    Rozbalit Rozbalit vše Re: Shellová zábava
    Jiste, chovani bashe je v tomto asi lepsi, ale to nic nemeni na tom, ze jine shelly to implementuji po svem a nelze to oznacit za spatnou implementaci. Proste neni v 99 procentech pripadu dobry napad toto pouzit.
    15.1. 09:29 mimi.vx | skóre: 37 | blog: Mimi.VX | Praha
    Rozbalit Rozbalit vše Re: Shellová zábava

    jj, bud clovek musipsat dle posixu a davat si pozor na nedefinovane veci. A nebo proesne specifikovat shell/jazyk

    USE="-gnome -kde";turris
    xkucf03 avatar 10.1. 23:25 xkucf03 | skóre: 46 | blog: xkucf03
    Rozbalit Rozbalit vše Re: Shellová zábava
    co je divneho na tom, ze si to kazdy shell implementuje po svem
    Smyslem konstrukce:
    PROMĚNNÁ=hodnota nějaký-příkaz;
    je spustit nějaký-příkaz s danou hodnotou proměnné prostředí – zatímco jiné/následující příkazy chci spouštět bez této proměnné resp. s její původní hodnotou – jinak bych totiž napsal:
    PROMĚNNÁ=hodnota;
    
    nějaký-příkaz;
    nějaký-další-příkaz;
    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-Výuka.cz, Nekuřák.net
    11.1. 00:20 RM
    Rozbalit Rozbalit vše Re: Shellová zábava
    Tak on příkaz přiřazení 'PROMĚNNÁ=hodnota' má tu vlastnost, že má navíc platný oddělovač mezeru. Nejedná se o plnohodnotný oddělovač jako středník nebo nový řádek, protože přiřazení na takovém řádku se provedou stejně až po ; nebo \n. Takže něco jako V=1 M=2 echo $V$M sice funguje, ale nic nevytiskne. U "funkce" (ono je to spíš makro) je situace jiná. Ta při vložení kódu na místo přidá hned řádný oddělovač, proměnné se tedy nastaví a echo uvnitř funkce má už k dispozici nastavené proměnné ze stejného řádku. Z toho pohledu je logické chování dashe. Fíčura bashe toho využívá jako levého argumentu a snaží se chování připodobnit chování externího programu. -- Je to prostě taková hezká bashovina, co nestojí za hádku.
    11.1. 07:01 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Shellová zábava

    Mně tedy chování dashe vůbec logické nepřipadá, protože hlavně vůbec není konzistentní. V okamžiku, kdy se konstrukce

      var=val cmd
    

    chová diametrálně odlišně podle toho, jestli je cmd (externí) příkaz nebo funkce, stačí nahradit příkaz vlastním wrapperem (což je běžný postup) a skript se rozbije. Tohle prostě autoři dashe nedomysleli.

    "funkce" (ono je to spíš makro)

    Shellová funkce se ani zdaleka nechová jako makro.

    11.1. 09:33 RM
    Rozbalit Rozbalit vše Re: Shellová zábava
    není konzistentní

    Ono být ani konzistentní nemůže, když externí programy a built-in, které je překrývají, podporují levý argument a jiné built-in programy argument na levé straně nepodporují. (S tím echem jsem neuvedl moc dobrý příklad, to se zrovna překrývá s externím programem echo a u těch co levou stranou nepodporují hlásí shell chybu, kromě samotného přiřazení.)

    nahradit příkaz vlastním wrapperem

    Já nevim, jestli bych chtěl měnit změnou parametru prostředí před funkcí chování všech programů použitých uvnitř wrapperu. Zejména, když u některých ani nevím, co by to mohlo způsobit. Navíc hojné používání levého argumentu mi moc čitelné nepřijde; raději, když to funkce nepodporují.

    Shellová funkce se ani zdaleka nechová jako makro

    Vycházím z toho, že je to skoro stejné jako makro TeXu (až na expanze): žádné lexikální prostory - jen localizace proměnné uvnitř bloku; výstupem je tisk na stdout (pokud nepoužívám return pro status do stderr); takže pokud bych ve funkci nahradil poziční parametry hodnotou, tak to celé mohu napsat jen do bloku spuštěném v externím procesu třeba jako (makro.....) | cat nebo u přiřazení se blok vloží do substituce m=$(makro....). Mně to tedy vždycky přišlo tak trochu na pomezí makro/funkce, ale představa makra mi přijde u řešení některých problémů výhodnější. Nevím sice jak to je uvnitř shellu naprogramované, ale pochybuji, že "funkce" skutečně proběhne mimo program a pak vrací jen výsledek; nehledě na to, že to ani návratovou hodnotu nemá. Kdyby to tak bylo, pak by se to zřejmě nenazýváno makro-procesorem. Ale zkuste mne přesvědčit o opaku, rád si v tom případně udělám jasno.
    11.1. 09:53 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Shellová zábava
    podporují levý argument a jiné built-in programy argument na levé straně nepodporují

    Tak tady se nechytám. Co myslíte termínem levý argument?

    Já nevim, jestli bych chtěl měnit změnou parametru prostředí před funkcí chování všech programů použitých uvnitř wrapperu.

    Já samozřejmě ano. Když to bude samostatný script, také tu proměnnou dostane do svého environmentu. A funkce je v podstatě takový "embedded script", tedy až na to, že defaultně sdílí environment se zbytkem scriptu.

    nehledě na to, že to ani návratovou hodnotu nemá

    Opravdu? Tak zkuste spustit tohle

    #!/bin/bash
    
    function starts_with_a()
    {
        if [ "${1#a}" = "$1" ]; then
            return 1
        else
            return 0
        fi
    }
    
    starts_with_a abc && echo "abc YES"
    starts_with_a abc || echo "abc NO"
    starts_with_a def && echo "def YES"
    starts_with_a def || echo "def NO"
    

    a vysvětlit, proč to vypíše

    abc YES
    def NO
    
    11.1. 10:37 RM
    Rozbalit Rozbalit vše Re: Shellová zábava
    Co myslíte termínem levý argument?

    Samozřejmě to, co je uvedeno na levé straně příkazu/programu. Nejčastěji nastavení hodnot prostředí LC_TYPE aj., ale v podstatě tam může být cokoliv, co program podporuje, třeba nastavení vlastních proměnných při spuštění shellu; asi je vám jasné, že se nejedná o příkaz shellu pro přiřazení do proměnné, ač to tak opticky vypadá. Dokonce -- což se tak často neví -- tam může být nastavení file-deskriptoru (přesměrování), který se ze zvyku a pro lepší čitelnost dává na pravou stranu až na konec.

    funkce je v podstatě takový "embedded script"

    Jinými slovy: vložený blok makra s expandovanými pozičními parametry, případně vyměněnou proměnnou, která by byla v makru označena jako local

    vysvětlit, proč to vypíše...

    Však jsem psal, že return vrací (spíš posílá) status do stderr. Já psal ale o návratové hodnotě, která jde dál ke zpracování -- nějaký řetězec. V shellu je to jen o přesměrování stdout. Samozřejmě s přivřením oka to můžeme také nazývat návratovou hodnotou, pokud nám nebude vadit, že ji vrací příkaz jako echo nebo printf.
    11.1. 10:51 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Shellová zábava
    Samozřejmě to, co je uvedeno na levé straně příkazu/programu.

    Uff… Tak říkat tomu argument by mne ani ve snu nenapadlo. To přece není žádný argument, ta konstrukce prostě znamená "spusť tenhle příkaz s těmito hodnotami těchto proměnných", nic víc a nic méně. S argumenty to nemá nic společného, příkaz nemá žádnou možnost, jak poznat, jestli jste použil tu jednořádkovou konstrukci nebo jste tu proměnnou prostě a jednoduše nastavil klasickým způsobem (jako exportovanou).

    Dokonce -- což se tak často neví -- tam může být nastavení file-deskriptoru (přesměrování), který se ze zvyku a pro lepší čitelnost dává na pravou stranu až na konec.

    Snad nechcete přesměrování také říkat argument? Zkuste se zamyslet např. nad tím, proč

      wc file
      wc <file
    

    mají rozdílný výstup (hlavně proč první vypíše jméno souboru a druhý ne).

    Však jsem psal, že return vrací (spíš posílá) status do stderr. Já psal ale o návratové hodnotě, která jde dál ke zpracování -- nějaký řetězec. V shellu je to jen o přesměrování stdout. Samozřejmě s přivřením oka to můžeme také nazývat návratovou hodnotou, pokud nám nebude vadit, že ji vrací příkaz jako echo nebo printf.

    Je mi líto, ale v tomhle odstavci není pravda skoro nic. Návratová hodnota nemá se stderr nic společného a u funkce funguje v podstatě stejně jako u externího příkazu a stejně se i zpracovává. Návratová hodnota je číslo, žádný řetězec, jak u funkce, tak u externího příkazu. Výstup (standard output) a chybový výstup (standard error) jsou něco úplně jiného.

    11.1. 11:33 RM
    Rozbalit Rozbalit vše Re: Shellová zábava
    Tak mohl jsem to nazvat pravou a levou stranou příkazu nebo tokeny před a za příkazem; přesměrování je samozřejmě věcí shellu a program s tím nemá nic společného. Já se na to dívám stále jako na výraz na řádku shellu, zkuste mi tedy prominout zjednodušení "pravý a levý argument". Přesnější dělení tu -- podle mne -- nebylo potřeba. Máte ale pravdu, že stderr se statusem nesouvisí, to jsem napsal špatně; sám se tomu teď divím. Jinak myslím, že vše ostatní platí.
    11.1. 01:09 ehm
    Rozbalit Rozbalit vše Re: Shellová zábava
    DFTT. Psal to už Michal Kubeček v #3. Kdybyste si to s Odinem přečetli, mohlo mu zbýt o několik minut víc času na jeho dva psy a tobě na abstraktní univerzálně konfigurovatelný multi-threading enterprise edition rozblikávač LED.
    limit_false avatar 11.1. 13:37 limit_false | skóre: 23 | blog: limit_false
    Rozbalit Rozbalit vše Re: Shellová zábava
    U bashe jsem nasel tohle divne chovani:

    ls -d [A-Z]*

    V bashi vypise i soubory nezacinajici velkym pismenem. Pod zsh to ma ocekavany vysledek. Nevim zda je to zpusobeno locale nebo cim, ale ani nastaveni locale na LC_ALL=C to chovani nezmeni.
    When people want prime order group, give them prime order group.
    11.1. 13:49 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Shellová zábava

    Works for me:

    mike@unicorn:/tmp/a> ls -d [A-Z]*
    A  b  B  c  C  d  D
    mike@unicorn:/tmp/a> LC_ALL=C
    mike@unicorn:/tmp/a> ls -d [A-Z]*
    A  B  C  D
    
    17.1. 10:38 Lyco | skóre: 12 | blog: Lyco
    Rozbalit Rozbalit vše Re: Shellová zábava
    Jistě že to závisí na locale. Ovšem výsledek záleží na locale shellu (jaké parametry se předají a v jakém pořadí) a na locale ls (jak se jména souborů seřadí a jak se interpretují):
    [lyco@hubb test]$ LC_ALL=cs_CZ.utf8
    [lyco@hubb test]$ ls *
    a  A  á  Á  b  B  c  C  č  Č
    [lyco@hubb test]$ ls [A-C]*
    A  á  Á  b  B  c  C
    [lyco@hubb test]$ ls [A-Z]*
    A  á  Á  b  B  c  C  č  Č
    [lyco@hubb test]$ LC_ALL=C
    [lyco@hubb test]$ ls [A-C]*
    A  B  C
    [lyco@hubb test]$ 
    [lyco@hubb test]$ LC_ALL=C ls [A-C]*
    A  B  C
    [lyco@hubb test]$ LC_ALL=cs_CZ.utf8
    [lyco@hubb test]$ LC_ALL=C ls [A-C]*
     A   B   C   b   c  ''$'\303\201'  ''$'\303\241'
    Příspěvek se rázem stává až o 37,5 % pravdivější, je-li pod ním napsáno reálné jméno.

    Založit nové vláknoNahoru

    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.