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 15:22 | Zajímavý článek

    Nové číslo časopisu Raspberry Pi zdarma ke čtení: Raspberry Pi Official Magazine 160 (pdf).

    Ladislav Hagara | Komentářů: 0
    dnes 14:11 | IT novinky

    Izrael od února zakáže dětem používat v prostorách základních škol mobilní telefony. Podle agentury AFP to uvedlo izraelské ministerstvo školství, které zdůraznilo negativní dopady, které na žactvo používání telefonů má. Izrael se tímto krokem přidává k rostoucímu počtu zemí, které dětem ve vzdělávacích zařízeních přístup k telefonům omezují.

    Ladislav Hagara | Komentářů: 8
    dnes 14:00 | IT novinky

    Internetová společnost Google ze skupiny Alphabet pravděpodobně dostane příští rok pokutu od Evropské komise za nedostatečné dodržování pravidel proti upřednostňování vlastních služeb a produktů ve výsledcích vyhledávání. V březnu EK obvinila Google, že ve výsledcích vyhledávání upřednostňuje na úkor konkurence vlastní služby, například Google Shopping, Google Hotels a Google Flights. Případ staví Google proti specializovaným

    … více »
    Ladislav Hagara | Komentářů: 5
    dnes 12:22 | Pozvánky

    Byl oznámen program a spuštěna registrace na konferenci Prague PostgreSQL Developer Day 2026. Konference se koná 27. a 28. ledna a bude mít tři tracky s 18 přednáškami a jeden den workshopů.

    TomasVondra | Komentářů: 0
    dnes 12:11 | Pozvánky

    Na webu československého síťařského setkání CSNOG 2026 je vyvěšený program, registrace a další informace k akci. CSNOG 2026 se uskuteční 21. a 22. ledna příštího roku a bude se i tentokrát konat ve Zlíně. Přednášky, kterých bude více než 30, budou opět rozdělené do tří bloků - správa sítí, legislativa a regulace a akademické projekty. Počet míst je omezený, proto kdo má zájem, měl by se registrovat co nejdříve.

    VSladek | Komentářů: 0
    včera 00:44 | Zajímavý článek

    Máirín Duffy a Brian Smith v článku pro Fedora Magazine ukazují použití LLM pro diagnostiku systému (Fedora Linuxu) přes Model Context Protocol od firmy Anthropic. I ukázkové výstupy v samotném článku obsahují AI vygenerované nesmysly, např. doporučení přeinstalovat balíček pomocí správce balíčků APT z Debianu místo DNF nativního na Fedoře.

    |🇵🇸 | Komentářů: 34
    13.12. 04:55 | Zajímavý software

    Projekt D7VK dospěl do verze 1.0. Jedná se o fork DXVK implementující překlad volání Direct3D 7 na Vulkan. DXVK zvládá Direct3D 8, 9, 10 a 11.

    Ladislav Hagara | Komentářů: 1
    12.12. 16:00 | Nová verze

    Byla vydána nová verze 2025.4 linuxové distribuce navržené pro digitální forenzní analýzu a penetrační testování Kali Linux (Wikipedie). Přehled novinek se seznamem nových nástrojů v oficiálním oznámení na blogu.

    Ladislav Hagara | Komentářů: 2
    12.12. 12:44 | IT novinky

    Národní úřad pro kybernetickou a informační bezpečnost (NÚKIB) zveřejnil Národní politiku koordinovaného zveřejňování zranitelností (pdf), jejímž cílem je nejen zvyšování bezpečnosti produktů informačních a komunikačních technologií (ICT), ale také ochrana objevitelů zranitelností před negativními právními dopady. Součástí je rovněž vytvoření „koordinátora pro účely CVD“, jímž je podle nového zákona o kybernetické … více »

    Ladislav Hagara | Komentářů: 28
    12.12. 04:33 | Nová verze

    Vývojáři KDE oznámili vydání balíku aplikací KDE Gear 25.12. Přehled novinek i s náhledy a videi v oficiálním oznámení.

    Ladislav Hagara | Komentářů: 0
    Jaké řešení používáte k vývoji / práci?
     (35%)
     (48%)
     (19%)
     (17%)
     (22%)
     (14%)
     (24%)
     (15%)
     (17%)
    Celkem 467 hlasů
     Komentářů: 19, poslední 11.12. 20:04
    Rozcestník

    Bash, Dash a read -n 1

    14.2.2012 00:15 | Přečteno: 1348×

    Aneb příběh o tom, jak dokáže inovace brzdit

    Tak jsem nedávno řešil problém s mým bashovým skriptem. Že spustím příkaz v terminálu bez problémů, ale jako sh skript.sh už si ani neškrtnu jsem si zvyknul. Nejčastější problém je podmínka if, vždycky vypisuje chybu ať udělám snad cokoli. Ale už jsem se naučil jak ji napsat tak, aby neprotestovala (dost neefektivně).

    Na(ne)štěstí jsem v posledním pokusu (smyčka while) potřeboval použít read -n 1....a nastaly problémy. Skript měl načíst jeden znak, rovnou podle case spustit přiřazený příkaz a znovu se ptát....a takhle dokola. Bohužel co se (ne)stalo - terminál se mi začal plnit hromadou textu o tom, že read -n 1 opravdu není to co chci a že to nebude fungovat.

    Vydal jsem se na cestu a ptal se Google, který mi (jako vždy, stačí se umět ptát) odpověděl, kde je zakopaný.....silový vodič :-D  Ten, co mě silovým polem nutí přepisovat skripty. Ano přátelé.....byl to Dash! Díky svému výcviku jsem obratem v terminálu jako root napsal dpkg-reconfigure dash (snad jen tohle) a Dash poslal na dlouhou dobu pryč.

     

    I začalo mi ale vrtat hlavou, proč se na prvních řádcích snad všech Bashových skriptů objevuje:

    #!/bin/bash

    #!/bin/env bash

    ....a možná i několik dalších alternativních zápisů. Proč píšu že chci Bash, když mi skript pořád běží přes Dash? To bych to tam skoro ani nemusel psát. Teď mě tak v polospánku napadá použít podmínku a pokud se skript pustí v Dashi, tak jen vypsat něco ve smyslu "tudy cesty nevede, spust mě tak a tak", případně zařídit aby při běhu v Dashi sám sebe znova spustil v Bashi....otázka je, jestli se dřív něco nezacyklí a nevznikne vidličková bomba. Nemluvě o tom, že se jedná o prasárnu nejvyššího kalibru :-D  Ale mě to stačí, hlavně když to bude fungovat....za předpokladu že je to čistě pro vnitřní účely a nebudu to šířit ven ;-)

     

    Chtěl bych se zeptat zasvěcených, jak je to s tím #!/bin/bash ? Znamená to, že se má skript spustit v Bashi, nebo jen konstatování že je to Bashový skript a dělej si s tim co chceš? Upřímně řečeno, psát bash manual.sh proti sh manual.sh je krok zpět, obzvlášť když to u mě funguje stylem sh m[TAB], Efektivita především....ale nechci slyšet že se mám učit Python nebo C, jsem na elektroškole a psaní bashových skriptů mám jen jako takovou berličku (například neskutečně neefektivní skript pro počítání RLC obvodů a generováním grafu přes GNUplot).

           

    Hodnocení: 33 %

            špatnédobré        

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

    Komentáře

    Vložit další komentář

    14.2.2012 00:24 Dr. Eddy | skóre: 9 | blog: glog | České Budějovice
    Rozbalit Rozbalit vše Re: Bash, Dash a read -n 1
    #!/bin/bash na zacatku udava, v jakem interpreteru se ma soubor spustit. Takze tam muzes napsat treba #!/usr/bin/python nebo podobne a melo by se to pustit jako python skript.

    Urcite neni hezke, ze bash-skripty ti pousti Dash. Hadam, ze tam mas symlink...
    14.2.2012 00:59 Mrkva | skóre: 22 | blog: urandom
    Rozbalit Rozbalit vše Re: Bash, Dash a read -n 1
    Není náhodou /bin/sh symlink na /bin/dash?
    We lived, we danced, we raced, we run, from the oblivion to come, Dressed for the last dance of a hundred thousand suns.
    Marián Kyral avatar 14.2.2012 07:33 Marián Kyral | skóre: 29 | blog: Sem_Tam | Frýdek-Místek
    Rozbalit Rozbalit vše Re: Bash, Dash a read -n 1
    Tak tak. Podle mně stačílo skript spustit rovnou (./script) a ono by to začalo fungovat.
    14.2.2012 06:03 retroslava | skóre: 9 | blog: TryCatch | Žižkoff
    Rozbalit Rozbalit vše Re: Bash, Dash a read -n 1

    No pokud máš tohle nahoře, tak dej na soubor chmod +x a pak ho spouštěj přímo ./soubor.sh. A on se právě spustí v tom, co je nahoře. Říká se to mu shebang myslim. http://en.wikipedia.org/wiki/Shebang_(Unix)

    Pozor! Jsem naprostý idiot. Co jsem napsal včera dnes už dávno neplatí. Zavazuji se, že budu diskutovat nezávazně.
    Dreit avatar 14.2.2012 14:03 Dreit | skóre: 15 | blog: Dreit a jeho dračí postřehy | Královehradecký kraj
    Rozbalit Rozbalit vše Re: Bash, Dash a read -n 1

    Díky moc za osvětlení, koukám že jsem větší lama než jsem si myslel :-)

    Nope
    gtz avatar 14.2.2012 20:52 gtz | skóre: 27 | blog: gtz | Brno
    Rozbalit Rozbalit vše Re: Bash, Dash a read -n 1
    :-)
    - nejhorší jsou trpaslíci ... Ti Vám vlezou úplně všude
    14.2.2012 08:30 fík
    Rozbalit Rozbalit vše Re: Bash, Dash a read -n 1
    Že spustím příkaz v terminálu bez problémů, ale jako
    perl skript.py
    už si ani neškrtnu, jsem si zvyknul...
    14.2.2012 12:23 já
    Rozbalit Rozbalit vše Re: Bash, Dash a read -n 1
    :-))) pobavil jsem se
    pavlix avatar 14.2.2012 13:31 pavlix | skóre: 54 | blog: pavlix
    Rozbalit Rozbalit vše Re: Bash, Dash a read -n 1
    +1!
    Já už tu vlastně ani nejsem. Abclinuxu umřelo.
    14.2.2012 09:01 Stevko | skóre: 3 | Praha
    Rozbalit Rozbalit vše Re: Bash, Dash a read -n 1
    Keď spústíš skript spôsobom ./skript.sh, tak sa vykoná klasický fork() a exec() a jadro sa pozrie na #! a podľa toho spustí správny interpret. Keď spustíš sh skript.sh, tak sa spustí sh (v tomto prípade dash) a ako prvý riadok vidí komentár (začína to znakom #) a pokračuje ďalej vo vykonávaní. A možno je to úplne ináč a ja píšem hlúposti.
    Príspevok nemá byť ukončený spojením „môj názor“.
    Dreit avatar 14.2.2012 14:04 Dreit | skóre: 15 | blog: Dreit a jeho dračí postřehy | Královehradecký kraj
    Rozbalit Rozbalit vše Re: Bash, Dash a read -n 1

    Mám dojem že je to přesně takhle

    Nope
    14.2.2012 09:27 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
    Rozbalit Rozbalit vše Re: Bash, Dash a read -n 1
    Aneb příběh o tom, jak dokáže inovace brzdit
    Omlouvám se, ale nikde jsem tuhle část nenašel. Zápisek je jenom o tom, že máte drobet chaos v termitech. Pokud jsem něco přehlédl, mohl byste tu část zvýraznit?
    When your hammer is C++, everything begins to look like a thumb.
    14.2.2012 09:34 loki
    Rozbalit Rozbalit vše Re: Bash, Dash a read -n 1
    Pokud budes mit soubor.sh:
    #!/bin/bash
    echo "Ahoj"
    potom priradis spousteci prava:
    chmod +x soubor.sh
    nasledne lze skript spustit klasicky takto:
    ./soubor.sh
    Prvni radek urcuje interpret, ve kterem se skript spusti. Nemusi tam byt jen bash.

    Pokud spoustis skript timto zpusobem:
    sh soubor.sh
    a nefunguje to, tak ti patrne sh (asi symlink) miri na spatny shell - alespon u mne miry /bin/sh na dash (debian testing). Doporucuji tedy spousteni jako
    ./soubor.sh
    ale pokud trvas na
    sh soubor.sh
    tak toto by mohlo byt reseni:
    rm /bin/sh
    ln -s bash /bin/sh
    Snad to pomuze.
    14.2.2012 13:32 Václav HFechs Švirga | skóre: 26 | blog: HF | Kopřivnice
    Rozbalit Rozbalit vše Re: Bash, Dash a read -n 1
    Případně pokud z nějakých důvodů nechce používat ./script.sh, ať udělá

    bash script.sh

    Pro autora blogu: sh je NĚJAKÝ shell, může to být bash, dash, ksh, ale taky klidně třeba něco úplně jiného...

    Bash je konkrétní shell.

    Všechny shelly umí nějakou společnou syntaxi vycházející z nějakých historických standardů a můžeš si napsat shell skript, který pojede ve všech shellech. Třeba na freebsd nebo solarisu bash být nemusí.

    Pokud chceš využívat vychytávky bashe, není problém, ale pak to nepouštěj pomocí sh, ale pomocí bashe ;-).

    Takže v čem je sakra problém? :-)
    Baník pyčo!
    14.2.2012 13:34 Václav HFechs Švirga | skóre: 26 | blog: HF | Kopřivnice
    Rozbalit Rozbalit vše Re: Bash, Dash a read -n 1
    Jinak ještě dash je v tvé distrubuci výchozí shell proto, protože výchozím shellem se pouští startovací skripty. A Bash je pomalý. Dash je rychlejší a proto ti rychleji naběhne systém - za to jsi rád ne? Pokud si jako vychozí shell nastavíš bash, vše bude OK, ale o to zrychlení příjdeš.

    V terminálu se ti ale už samozřejmě pouští bash, protože bash je pro interaktivní práci mnohem příjemnější (to nic nemění na tom, že když si zavoláš přes příkaz sh služby dashe, tak s tím bash nic nezmůže, jak jsem psal výše, používej bash skript).
    Baník pyčo!
    Dreit avatar 14.2.2012 14:10 Dreit | skóre: 15 | blog: Dreit a jeho dračí postřehy | Královehradecký kraj
    Rozbalit Rozbalit vše Re: Bash, Dash a read -n 1

    Děkuju a pro příště se poučim.

    Teď koukám, zdá se mi to, nebo funguje alias? :-D  alias sh='bash'

    Nope
    Jakub Lucký avatar 14.2.2012 14:21 Jakub Lucký | skóre: 40 | Praha
    Rozbalit Rozbalit vše Re: Bash, Dash a read -n 1
    Alias ti bude fungovat, protože Bash zvládá všechny konstrukce, které dash (ale ne obráceně)... Ale všechno, co používá sh bude teď pomalejší...
    If you understand, things are just as they are; if you do not understand, things are just as they are.
    Dreit avatar 14.2.2012 15:24 Dreit | skóre: 15 | blog: Dreit a jeho dračí postřehy | Královehradecký kraj
    Rozbalit Rozbalit vše Re: Bash, Dash a read -n 1

    Hmm....díky za info, zkusim vymyslet něco lepšího....a možná už mám nápad :-)

    Nope
    Jakub Lucký avatar 14.2.2012 15:52 Jakub Lucký | skóre: 40 | Praha
    Rozbalit Rozbalit vše Re: Bash, Dash a read -n 1
    A co chcete proboha používat?

    Používejte hashbang a spouštějte skripty tak jak se mají, se spustitelnými právy...
    If you understand, things are just as they are; if you do not understand, things are just as they are.
    14.2.2012 18:17 Václav HFechs Švirga | skóre: 26 | blog: HF | Kopřivnice
    Rozbalit Rozbalit vše Re: Bash, Dash a read -n 1
    Pokud si to dá do ~/.bashrc, žádné zpomalení nepozná. To se týká spíše startovacích skriptů a těch se tohle nijak nedotkne...
    Baník pyčo!
    14.2.2012 10:33 tomboytom
    Rozbalit Rozbalit vše Re: Bash, Dash a read -n 1
    chytré hlavy: setkal jsem se nedávno s chybou "sh: Syntax error: newline unexpected " u kódu curl http://j.mp/spf13-vim3 -o - | sh. To vše na Ubuntu 11.10. Za to může taky ten slavnej dash?
    14.2.2012 12:41 polymorf | skóre: 14 | blog: tar_zxpf
    Rozbalit Rozbalit vše Re: Bash, Dash a read -n 1
    skusil by som dotycny skript a/alebo doticny stahovany subor prebehnut cez dos2unix
    Jakub Lucký avatar 14.2.2012 13:04 Jakub Lucký | skóre: 40 | Praha
    Rozbalit Rozbalit vše Re: Bash, Dash a read -n 1
    A proč to nevyzkoušíte?

    curl http://j.mp/spf13-vim3 -o - | bash

    curl http://j.mp/spf13-vim3; checkbashisms spfl13-vim3
    If you understand, things are just as they are; if you do not understand, things are just as they are.
    Jakub Lucký avatar 14.2.2012 11:32 Jakub Lucký | skóre: 40 | Praha
    Rozbalit Rozbalit vše Re: Bash, Dash a read -n 1
    Ach bože, proč lidi používají sh, když chtějí bash?
    If you understand, things are just as they are; if you do not understand, things are just as they are.
    pavlix avatar 14.2.2012 13:33 pavlix | skóre: 54 | blog: pavlix
    Rozbalit Rozbalit vše Re: Bash, Dash a read -n 1
    +1
    Já už tu vlastně ani nejsem. Abclinuxu umřelo.
    Dreit avatar 14.2.2012 14:11 Dreit | skóre: 15 | blog: Dreit a jeho dračí postřehy | Královehradecký kraj
    Rozbalit Rozbalit vše Re: Bash, Dash a read -n 1

    ....protože ve škole se učili jen TurboPascal a Javascript :-(

    Nope
    Jakub Lucký avatar 14.2.2012 16:42 Jakub Lucký | skóre: 40 | Praha
    Rozbalit Rozbalit vše Re: Bash, Dash a read -n 1
    Já se ve škole učil akorát Word a HTML...
    If you understand, things are just as they are; if you do not understand, things are just as they are.
    edois avatar 14.2.2012 15:32 edois
    Rozbalit Rozbalit vše Re: Bash, Dash a read -n 1
    Zásadně #!/usr/bin/env bash, na FreeBSD třeba bash vůbec není v /bin.
    pavlix avatar 14.2.2012 15:46 pavlix | skóre: 54 | blog: pavlix
    Rozbalit Rozbalit vše Re: Bash, Dash a read -n 1
    Jasně, a až narazíš na systém, kde env není v /usr/bin, tak budeš zásadně za co? :)

    IMO je ten hack s /usr/bin/env prasárna a měl by se postupně vymýtit. Jo... kdyby obecně v distribucích fungovalo něco rozumného (např.: #!bash, #!python apod), tak by to bylo mnohem lepší.
    Já už tu vlastně ani nejsem. Abclinuxu umřelo.
    14.2.2012 16:12 loki
    Rozbalit Rozbalit vše Re: Bash, Dash a read -n 1
    #!$(which bash) ? :-) Skoda, ze to nejde... ;-)
    15.2.2012 12:53 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
    Rozbalit Rozbalit vše Re: Bash, Dash a read -n 1
    Jo... kdyby obecně v distribucích fungovalo něco rozumného (např.: #!bash, #!python apod), tak by to bylo mnohem lepší.
    Chystá se něco lepšího
    When your hammer is C++, everything begins to look like a thumb.
    pavlix avatar 20.2.2012 00:10 pavlix | skóre: 54 | blog: pavlix
    Rozbalit Rozbalit vše Re: Bash, Dash a read -n 1
    Lepšího to sice není, ale taky to pomůže.
    Já už tu vlastně ani nejsem. Abclinuxu umřelo.
    Bystroushaak avatar 15.2.2012 18:56 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
    Rozbalit Rozbalit vše Re: Bash, Dash a read -n 1
    Zatím jsem nenarazil :) Ale už jsem několikrát opravoval pevně zadrátovaný interpreter, který nebyl tam kde si autor myslel že bude.

    Založit nové vláknoNahoru

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