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 18:30 | Komunita

Jednodeskový počítač Raspberry Pi slaví již 5 let. Prodej byl spuštěn 29. února 2012. O víkendu proběhne v Cambridgi velká narozeninová party. Na YouTube bylo při této příležitosti zveřejněno video představující zajímavé projekty postavené na Raspberry Pi.

Ladislav Hagara | Komentářů: 0
dnes 18:30 | Nová verze

Byla vydána verze 2017.1.1 svobodného multiplatformního leteckého simulátoru FlightGear. Kódový název a výchozí letiště této verze je Bergen. Přehled novinek v Changelogu.

Ladislav Hagara | Komentářů: 0
dnes 10:50 | Zajímavý software

Mozilla.cz informuje o dvou nových experimentálních funkcích v programu Firefox Test Pilot (zprávička). Snooze Tabs slouží k odkládání panelů na později. Pokud vám někdo pošle odkaz, ale vy nemáte čas si stránku hned přečíst, můžete si naplánovat otevření panelu na později. Stačí kliknout na tlačítko a vybrat, kdy chcete panel otevřít. Firefox panel schová a ve vybraný čas znovu otevře. Pulse umožňuje ohodnotit, jak dobře stránka funguje, např. jak rychle se ve Firefoxu načetla. Podle nasbíraných hodnocení pak bude Mozilla prohlížeč ladit.

Ladislav Hagara | Komentářů: 3
dnes 02:00 | IT novinky

V Barceloně probíhá veletrh Mobile World Congress 2017. Nokia na něm například představila (360° video na YouTube) novou Nokii 3310 (YouTube). BlackBerry představilo BlackBerry KEYone (YouTube) s QWERTY klávesnicí. LG představilo LG G6 (YouTube). Huawei HUAWEI P10 a P10 Plus. Samsung představil tablet Galaxy Tab S3.

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

Komunita kolem Linuxu From Scratch (LFS) vydala Linux Linux From Scratch 8.0 a Linux From Scratch 8.0 se systemd. Nové verze knih s návody na instalaci vlastního linuxového systému ze zdrojových kódů přichází především s Glibc 2.25 a GCC 6.3.0. Současně bylo oznámeno vydání verze 8.0 knih Beyond Linux From Scratch (BLFS) a Beyond Linux From Scratch se systemd.

Ladislav Hagara | Komentářů: 0
včera 11:11 | Nová verze

Byla vydána verze 0.10.0 webového prohlížeče qutebrowser (Wikipedie). Přehled novinek v příspěvku na blogu. Vývojáři qutebrowseru kladou důraz na ovladatelnost pomocí klávesnice a minimální GUI. Inspirovali se prohlížečem dwb a rozšířeními pro Firefox Vimperator a Pentadactyl. Prohlížeč qutebrowser je naprogramován v Pythonu a využívá PyQt5. Zdrojové kódy jsou k dispozici na GitHubu pod licencí GNU GPL 3.

Ladislav Hagara | Komentářů: 26
25.2. 16:22 | Nová verze

Po pěti měsících od vydání Waylandu a Westonu 1.12.0 oznámil Bryce Harrington (Samsung) vydání Waylandu 1.13.0 a Westonu 2.0.0.

Ladislav Hagara | Komentářů: 4
24.2. 13:37 | Bezpečnostní upozornění

Společnost Cloudflare (Wikipedie) na svém blogu potvrdila bezpečnostní problém s její službou. V požadovaných odpovědích od reverzní proxy byla odesílána také data z neinicializované paměti. Útočník tak mohl získat cookies, autentizační tokeny, data posílaná přes HTTP POST a další citlivé informace. Jednalo se o chybu v parsování HTML. Zneužitelná byla od 22. září 2016 do 18. února 2017. Seznam webů, kterých se bezpečnostní problém potenciálně týká na GitHubu.

Ladislav Hagara | Komentářů: 1
24.2. 08:22 | Nová verze

Byla vydána první beta verze Ubuntu 17.04 s kódovým názvem Zesty Zapus. Ke stažení jsou obrazy Kubuntu, Lubuntu, Ubuntu Budgie, Ubuntu GNOME, Ubuntu Kylin, Ubuntu Studio a Xubuntu. Dle plánu by Ubuntu 17.04 mělo vyjít 13. dubna 2017.

Ladislav Hagara | Komentářů: 58
23.2. 17:53 | Bezpečnostní upozornění

Google na svém blogu věnovaném počítačové bezpečnost informuje o nalezení "reálného" způsobu generování kolizí hašovací funkce SHA-1. Podrobnosti a zdrojové kódy budou zveřejněny do 90 dnů. Již dnes lze ale na stránce SHAttered nalézt 2 pdf soubory, jejichž obsah se liší a SHA-1 otisk je stejný (infografika).

Ladislav Hagara | Komentářů: 41
Jak se stavíte k trendu ztenčování přenosných zařízení (smartphony, notebooky)?
 (13%)
 (2%)
 (72%)
 (3%)
 (10%)
Celkem 726 hlasů
 Komentářů: 68, poslední dnes 07:29
    Rozcestník

    Dotaz: Parametr zadaný proměnnou

    27.3.2014 13:54 Milan Uhrák | skóre: 25 | blog: milan_at_ABC
    Parametr zadaný proměnnou
    Přečteno: 215×
    Dobrý den

    Chtěl jsem vytvořit parametrický find, alr nějak se mi to nedaří.

    Když zapíšu příkaz do shellu, udělá, co má dělat. Když ve skriptu nahradím nekteré parametry proměnnou, dostanu chybovou hlášku, popř. příkaz nedělá co by měl. Asi jsem se ztrytil v té syntaxi, tak váa prosím o pomoc.

    Toto je jen ukázka
    cd "~/data/psi/"
    filter="-mtime -2"
    exclude='( ! -iname "*ajax*" )'
    
    find . $filter $exclude -type f
    zobrazí i "ajax"
    cd "~/data/pes/"
    filter="-mtime -2"
    exclude='\( ! -iname "*ajax*" \)'
    
    find . $filter $exclude -type f
    
    dostanu find: paths must precede expression: \(

    Nějak nevím, jak to sestavit, zkoušel jsem pár dalších možností, ale většinou jsem skončil u stejné chyby jako ve druhém případě. Někde dělám chybu, ale nevím kde

    Díky za nasměrování

    Řešení dotazu:


    Odpovědi

    27.3.2014 14:26 Gejbriel007
    Rozbalit Rozbalit vše Re: Parametr zadaný proměnnou
    Co to zkusit úplně bez závorek?
    27.3.2014 15:30 Lyco | skóre: 11 | blog: Lyco
    Rozbalit Rozbalit vše Re: Parametr zadaný proměnnou
    Takhle to nejde. Bash ti parametr vždycky expanduje, a protože asi nemáš soubor který by vyhověl globu "*ajax*" (tj. začínal a končil uvozovkami), tak ho tam vloží doslova. Pokud uvozovky odstraníš, tak expanduje jen na soubory v aktuálním adresáři, což asi nechceš, když používáš find.

    Řešením je použít pole, viz http://wiki.bash-hackers.org/syntax/quoting#comment_1e2dcc9cbb8e800c100ab8d0760a5e12

    Podle mého názoru to je chyba v návrhu shellu.
    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.
    rADOn avatar 27.3.2014 16:42 rADOn | skóre: 44 | blog: bloK | Praha
    Rozbalit Rozbalit vše Re: Parametr zadaný proměnnou
    Chyba paths must precede expression: \( by te mela trknout: jak to ze find vidi to zpetny lomitko? To tam prece davas aby ti zavorku nesezral shell. Do findu by to melo projit uz expandovany cili jestli je tam to lomitko videt tak se ta expanze neprovedla a mas tam zbytecny escapovani navic. Cili ty pitomy lomitka vymaz.

    Bych si tak od boku strelil ze jsou za tim uvozovky/apostrofy, tam se vynechava vic expanzi.
    "2^24 comments ought to be enough for anyone" -- CmdrTaco
    27.3.2014 16:55 Filip Jirsák
    Rozbalit Rozbalit vše Re: Parametr zadaný proměnnou
    Když spustíte
    find -mtime -2 ( ! -iname "*ajax*" )
    předáváte do find 7 parametrů.

    Když použijete proměnné, je celá proměnná považovaná za jeden parametr. Také ji tak nastavujete – máte její obsah v uvozovkách, tj. je to celé jeden text, včetně těch mezer. Takže váš příkaz
    find . $filter $exclude -type f
    předá do find 5 parametrů a je ekvivalentní spuštění
    find . '-mtime -2' '\( ! -iname "*ajax*" \)' -type f
    A tomu find samozřejmě nerozumí.

    Pokud chcete předat jednou proměnnou víc parametrů, musíte použít pole. Vyzkoušejte si to třeba na příkazu touch:
    test1='abc def'
    test2=(ghj ijk)
    touch $test1
    touch $test2
    
    První touch vytvoří jeden soubor s názvem abc\ def. Druhý dostal jako parametr dvouprvkové pole, vytvoří tedy dva soubory, ghj a ijk.
    27.3.2014 18:41 potato
    Rozbalit Rozbalit vše Re: Parametr zadaný proměnnou
    Když použijete proměnné, je celá proměnná považovaná za jeden parametr.
    To je naprostá pitomost.

    1) Dokumentace bashe: The order of expansions is: brace expansion, tilde expansion, parameter, variable and arithmetic expansion and command substitution (done in a left-to-right fashion), word splitting, and pathname expansion.

    2) Praktický příklad:
    x='-h -l -a'
    ls $x
    
    27.3.2014 19:36 Filip Jirsák
    Rozbalit Rozbalit vše Re: Parametr zadaný proměnnou
    Není to pitomost, zsh se chová přesně tak jak jsem popsal. bash se chová jak popisujete vy. Nenapadlo mne, že se v tomhle budou shelly lišit. Z té citované dokumentace to navíc neplyne, protože do x přiřazujete text v apostrofech, takže se to dá klidně chápat tak, že v proměnné bude mezera escapovaná. Ostatně
    x='`pwd`'
    echo $x
    
    ani bashi nevypíše aktuální adresář, ale vypíše text `pwd`. Takže command substitution už v bashi na obsahu proměnné prováděno není.
    27.3.2014 21:10 potato
    Rozbalit Rozbalit vše Re: Parametr zadaný proměnnou
    První zmínka o zsh v celé diskusi je teď od tebe. Nepíše-li tazatal, že to chce v něčem tak specifickéhm jako zsh, předpokládá se snad posixový shell -- a ten se chová stejně jako bash. Respektive spíš: bash se chová jako posixový shell (viz např. IEEE std 1003.1-2001).
    27.3.2014 19:23 Milan Uhrák | skóre: 25 | blog: milan_at_ABC
    Rozbalit Rozbalit vše Re: Parametr zadaný proměnnou
    JJ.. kdyz dam promenne do uvozovek, tak to tak udela (nechce ani to -mtime) , když bez, tak v poho.
    27.3.2014 18:51 potato
    Rozbalit Rozbalit vše Re: Parametr zadaný proměnnou
    Způsob, jak se neztratit v syntaxi, nebo alespoň vidět, co shell přesně udělá, je
    set -x
    Jelikož pathname expanse probíhá až po word splittingu, rozumné řešení je skutečně jen přes pole, jak už tu bylo napsáno:
    exclude=('(' ! -iname '*sample*' ')')
    
    find . $filter "${exclude[@]}" -type f
    
    Využívá se magické vlastnosti konstrukce "${array[@]}", kterou shell neexpanduje na obsah pole jako jedno slovo, ale na samostatná slova pro každý prvek pole.
    27.3.2014 19:32 Milan Uhrák | skóre: 25 | blog: milan_at_ABC
    Rozbalit Rozbalit vše Re: Parametr zadaný proměnnou
    Stáváte se jednoznačným vítězem nevyhlášené soutěže o bash-hacking :-D ..... opravdu se to musí takhle ohackovat, vyzkoušeno a funguje...

    Děkuji všem, kdož se snažili pomoct a doufám, že tato otázka pomůže i mnoha z vás

    Milan
    27.3.2014 21:15 potato
    Rozbalit Rozbalit vše Re: Parametr zadaný proměnnou
    Nepříjemné samozřejmě je, že pole nejsou součástí posixového shellu. Sice jsou v bashi i ksh, ale v jednoduchých shellech jako dash narazíte...

    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.