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 03:33 | Komunita

    Na čem pracují vývojáři webového prohlížeče Ladybird (GitHub)? Byl publikován přehled vývoje za červen (YouTube).

    Ladislav Hagara | Komentářů: 0
    dnes 02:33 | Nová verze

    Libreboot (Wikipedie) – svobodný firmware nahrazující proprietární BIOSy, distribuce Corebootu s pravidly pro proprietární bloby – byl vydán ve verzi 25.06 "Luminous Lemon". Přidána byla podpora desek Acer Q45T-AM a Dell Precision T1700 SFF a MT. Současně byl ve verzi 25.06 "Onerous Olive" vydán také Canoeboot, tj. fork Librebootu s ještě přísnějšími pravidly.

    Ladislav Hagara | Komentářů: 0
    dnes 01:33 | Komunita

    Licence GNU GPLv3 o víkendu oslavila 18 let. Oficiálně vyšla 29. června 2007. Při té příležitosti Richard E. Fontana a Bradley M. Kuhn restartovali, oživili a znovu spustili projekt Copyleft-Next s cílem prodiskutovat a navrhnout novou licenci.

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

    Svobodný nemocniční informační systém GNU Health Hospital Information System (HIS) (Wikipedie) byl vydán ve verzi 5.0 (Mastodon).

    Ladislav Hagara | Komentářů: 0
    včera 16:22 | Komunita

    Open source mapová a navigační aplikace OsmAnd (OpenStreetMap Automated Navigation Directions, Wikipedie, GitHub) oslavila 15 let.

    Ladislav Hagara | Komentářů: 0
    včera 11:55 | Zajímavý software

    Vývojář Spytihněv, autor počítačové hry Hrot (Wikipedie, ProtonDB), pracuje na nové hře Brno Transit. Jedná se o příběhový psychologický horor o strojvedoucím v zácviku, uvězněném v nejzatuchlejším metru východně od všeho, na čem záleží. Vydání je plánováno na čtvrté čtvrtletí letošního roku.

    Ladislav Hagara | Komentářů: 32
    1.7. 18:22 | IT novinky

    V uplynulých dnech byla v depu Českých drah v Brně-Maloměřicích úspěšně dokončena zástavba speciální antény satelitního internetu Starlink od společnosti SpaceX do jednotky InterPanter 660 004 Českých drah. Zástavbu provedla Škoda Group. Cestující se s InterPanterem, vybaveným vysokorychlostním satelitním internetem, setkají například na linkách Svitava Brno – Česká Třebová – Praha nebo Moravan Brno – Břeclav – Přerov – Olomouc.

    Ladislav Hagara | Komentářů: 20
    1.7. 13:11 | Nová verze

    Byla vydána nová verze 8.7.0 správce sbírky fotografií digiKam (Wikipedie). Přehled novinek i s náhledy v oficiálním oznámení (NEWS). Nejnovější digiKam je ke stažení také jako balíček ve formátu AppImage. Stačí jej stáhnout, nastavit právo ke spuštění a spustit.

    Ladislav Hagara | Komentářů: 0
    1.7. 12:22 | IT novinky

    Před 30 lety, k 1. 7. 1995, byl v ČR liberalizován Internet - tehdejší Eurotel přišel o svou exkluzivitu a mohli začít vznikat první komerční poskytovatelé přístupu k Internetu [𝕏].

    Ladislav Hagara | Komentářů: 4
    1.7. 11:33 | Nová verze

    Byla vydána (𝕏) nová verze 7.4 open source monitorovacího systému Zabbix (Wikipedie). Přehled novinek v oznámení na webu, v poznámkách k vydání a v aktualizované dokumentaci.

    Ladislav Hagara | Komentářů: 0
    Jaký je váš oblíbený skriptovací jazyk?
     (59%)
     (28%)
     (6%)
     (2%)
     (0%)
     (1%)
     (3%)
    Celkem 340 hlasů
     Komentářů: 16, poslední 8.6. 21:05
    Rozcestník
    Štítky: není přiřazen žádný štítek

    BASH - II

    30. 10. 2003 | Jan Fuchs | Návody | 71485×

    V dnešní části seriálu si ukážeme základní příkazy. Vysvětlíme pojmy roura a přesměrování a na závěr to zkombinujeme a ukážeme si praktický příklad.

    Obsah jednotlivých dílů

    1. Úvod, editace příkazové řádky
    2. Základní příkazy, roury a přesměrování
    3. Proměnné, podmínky a cykly
    4. Funkce a příkazy
    5. Dokumenty here, regulární výrazy
    6. Ladění skriptů, odchytávání signálů a příklady

    Základní příkazy, roury a přesměrování

    Popis příkazů nebudu rozebírat do podrobností, od toho máme manuálové stránky. Jen stručně nastíním k čemu jednotlivé příkazy slouží. Abyste věděli, pod kterým příkazem se skrývá vámi požadovaná činnost, a měli jste se na začátku čeho chytit.

    Základní příkazy

    • cp - kopíruje soubory
    • rm - ruší soubory
    • mkdir - vytváří adresáře
    • rmdir - ruší prázdné adresáře
    • ln - vytvoří odkazy na soubory
    • chmod - změní přístupová práva k souborům
    • ls, dir, vdir - vypíše obsah adresářů
    • find - vyhledávání souborů
    • which - zobrazí absolutní cestu k programu
    • df - vypisuje informace o připojených FS
    • ps - informace o spuštěných procesech
    • cat, less - výpis souboru na obrazovku
    • xargs - spustí zadaný příkaz a zbylé argumenty čte ze standardního vstupu
    • grep - tiskne řádky, které odpovídají zadanému vzoru
    • wc - vypíše počet písmen, slov a řádků
    • sort - setřídí řádky

    Příklad použití archivačního programu tar (je to standardní nástroj, takže ho naleznete snad v každé distribuci).

    $ tar zcvf archiv.tgz ./adresar
    ./adresar/
    ./adresar/obesenec.sh
    ./adresar/oggwavmp3.sh
    ./adresar/archmed.sh
    $ tar zxf archiv.tgz
    $ tar jcf archiv.tar.bz2 ./adresar
    $ tar jxf archiv.tar.bz2

    Mimo archivace tar použije i kompresi z - gzip, j - bzip2. Volba x - rozbalí archív, c - vytvoří archív, v - vypisuje informace.

    Roury

    Příkazy dostávájí opravdovou moc teprve díky rourám a přesměrováním. Roura (značí se pomocí operátoru |) připojuje výstup jednoho procesu na vstup druhého procesu.

    Přesměrování

    Operátory přesměrování.

    • > - přesměrování standardního výstupu do souboru, jestliže soubor existuje bude přepsán
    • >> - jako předchozí, ale data přídá na konec souboru
    • < - přesměrování standardního vstupu do souboru
    • <<text - jako předchozí, ale při výskytu řetězce text zašle znak konce souboru

    Chcete-li zabránit přepsání souboru při přesměrování, můžete toto implicitní nastavení změnit následujícím příkazem.

    $ set -o noclobber

    Před operátorem přesměrování můžeme použít deskriptor souboru.

    • 0 standardní vstup
    • 1 standardní výstup
    • 2 standardní chybový výstup

    Dvě ukázky přesměrovaní standardního výstupu a standardního chybového výstupu do stejného souboru. Jako soubor použijeme /dev/null (o všechno, co do tohoto speciálního souboru přesměrujeme, přijdeme). Zkuste si příklad upravit tak, aby se vám na obrazovku vypisoval jen standardní chybový výstup a pak jen standardní výstup. Před zkoušením si nastavte jako aktuální adresář nějaký, který obsahuje podadresáře a soubory.

    $ find | xargs cat &> /dev/null
    $ find | xargs cat > /dev/null 2>&1

    První příklad použití programu tar by šel zapsat i následujícím způsobem za použití roury a přesměrování do souboru.

    $ tar cv ./adresar/ | gzip > archiv.tgz
    ./adresar/
    ./adresar/obesenec.sh
    ./adresar/oggwavmp3.sh
    ./adresar/archmed.sh

    Praktický příklad

    Potřebujeme vytvořit kontrolní součet všech souborů v aktuálním adresáři a jeho podadresářích za pomocí md5sum a uložit do souboru md5sum.txt (u tohoho souboru nebudeme provádět kontrolní součet).

    Ukáži vám dvě řešení. To druhé jsem vytvořil, než jsem se v konferenci dozvěděl o příkazu xargs.

    $ find . \! -path './md5sum.txt' -type f | xargs -i md5sum {} > md5sum.txt

    Program find předá programu xargs cestu ke všem souborům (na každém řádku je cesta k jednomu souboru), ten vezme řádek, dá ho do uvozovek a předá jako argument programu md5sum, načte další řádek... Dokud nezpracuje celý vstup. Standardní výstup programu md5sum se přesměruje do souboru md5sum.txt.

    find

    • \! - neguje následující podmínku
    • -path './md5sum.txt' - najde soubory, jejichž jména odpovídají './md5sum.txt'
    • -type f - jsou nalezeny běžné soubory

    xargs

    • -i - všechny výskyty dvojice znaků {} jsou nahrazeny cestou k souboru ze standardního vstupu, mezery neuzavřené v uvozovkách nejsou považovány za ukončení argumentu

    Je zbytečné psát takhle dlouhý příkaz, když ho budeme často používat. Proto si do souboru ~/.bashrc přídáme alias.

    alias md5sumr='find . \! -path './md5sum.txt' -type f | xargs -i md5sum {} > md5sum.txt'

    Po dalším spustění BASHE stačí, když zadáte jen md5sumr.

    Druhé řešení je vytvoření skriptu md5sumr.sh. Je to jen pro ukázku, aby bylo vidět, že to jde udělat i mnohem složitějším způsobem.

    #!/bin/bash
    
    koren=$(pwd)
    vystup="md5sum.txt"
    cesta="./"
    
    Md5sum() {
      local tmp
    
      for soubor in *; do
        if [ "$soubor" == "*" ]; then
          break
        fi
    
        if [ -d "$soubor" ]; then
          cd "./$soubor"
          tmp="$cesta"
          cesta="$cesta$soubor/"
          Md5sum
          cd "../"
          cesta="$tmp"
        else
          if [ "$soubor" != "$vystup" ] || [ "$cesta" != "./" ]; then
    	pwd=$(pwd)
    	cd "$koren"
    	md5sum "$cesta$soubor" >> "./$vystup"
    	cd "$pwd"
          fi
        fi
      done
    }
    
    Md5sum

    Na příště si připravte svůj oblíbený editor. Jestli žádný takový ještě nemáte, určitě vyzkoušejte Emacs a vi a jeden z nich si vyberte, časem určitě oceníte jejich kvality. Výše uvedený kód jsem úmyslně nekomentoval. Až dočtete tento seriál, měli byste ho pochopit.

    Nejčtenější články posledního měsíce

    Týden na ScienceMag.cz: Vědci objevují neznámé molekuly s pomocí AI
    Týden na ITBiz: Bitcoinová aféra otřásá Českem
    Jaderné noviny – přehled za květen 2025

    Nejkomentovanější články posledního měsíce

      všechny statistiky »

    Seriál BASH (dílů: 6)

    BASH - I (první díl)
    <—« BASH - I
    »—> BASH - III
    BASH - VI (poslední díl)

    Související články

    BASH - I (Úvod, editace příkazové řádky)
    BASH - III (Proměnné, podmínky a cykly)
    BASH - IV (Funkce a příkazy)
    BASH - V (Dokumenty here, regulární výrazy)
    BASH - VI (Ladění skriptů, odchytávání signálů a příklady)

    Odkazy a zdroje

    BASH - GNU Project

    Další články z této rubriky

    VDR a DVB-T2, část 2.
    VDR a DVB-T2, část 1.
    Šifrovaný Proxmox VE 6: ZFS, LUKS, systemd_boot a Dropbear
    MapTiler – proměňte obrázek v zoomovatelnou mapu
    Syncthing
           

    Hodnocení: 37 %

            špatnédobré        

    Nástroje: Tisk bez diskuse

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

    Komentáře

    Vložit další komentář

    30.10.2003 10:24 Tomáš Pelc | skóre: 22 | blog: multimedialni_pc_k_LCD_TV
    Rozbalit Rozbalit vše datum do nazvu
    Jak přidat datum do názvu vygenerovaného (*.txt) souboru?
    30.10.2003 10:38 Martin Masin
    Rozbalit Rozbalit vše datum do nazvu
    Pomoci prikazu date (viz man date), napr. takto: touch jmeno_`date '+%d.%m'`.txt.
    30.10.2003 12:06 Ales
    Rozbalit Rozbalit vše klavesova zkratka
    napsal jsem script ale resim aspon pro mne neresitelny problem. Da se ke spusteni tohoto scriptu nastavit nejaka globalni klavesova zkratka? Diky za pripadnou radu.
    30.10.2003 12:42 zlosyn | skóre: 24
    Rozbalit Rozbalit vše klavesova zkratka
    S uspechem prave k temto ucelum pouzivam xbindkeys
    http://hocwp.free.fr/xbindkeys/xbindkeys.html
    30.10.2003 14:46 Pet
    Rozbalit Rozbalit vše xargs ???
    A co to napsat takhle: find . \! -path './md5sum.txt' -type f -exec md5sum {} \; > md5sum.txt Ja vim, to uz tam neni ta roura, ale vzdyt ona tam byla tak hezoucka ;-)
    31.10.2003 02:24 C.
    Rozbalit Rozbalit vše xargs ???
    No ono je jeste jednoduzsi: md5sum .* * > md5sum.txt Berme to jako ukazkovy priklad ;)
    31.10.2003 09:29 Pet
    Rozbalit Rozbalit vše xargs ???
    Je to jednoduzsi, ale uz to neprochazi podadresare. Pro puvodni funkcnost to lze samozrejme zjednodusit na md5sum `find . \! -path './md5sum.txt' -type f` > md5sum.txt kde se md5sum pousti jen jednou, ale to uz pouziva figl, ktery se jeste neprobiral.
    1.11.2003 11:28 maleprase | skóre: 28
    Rozbalit Rozbalit vše xargs ???
    tohle imo nebude fungovat pro velky pocet souboru tipoval bych to na hlasku: Argument list too long
    Fuky avatar 1.11.2003 11:50 Fuky | skóre: 52 | blog: 4u
    Rozbalit Rozbalit vše xargs ???
    Trefa :-D V případě mnoha malých souborů bude toto řešení samozřejmě mnohem rychlejší, ale čím větší bude velikost souborů tím menší bude rozdíl v rychlosti. A navíc u rychlejšího řešení nastává níže uvedený problém. bash: /usr/bin/md5sum: Příliš dlouhý seznam argumentů To je hlavní nevýhoda rychlého řešení, takže rychleji neznamená vždy nejlépe ;-))
    31.10.2003 08:16 unchallenger | skóre: 69 | blog: unchallenger
    Rozbalit Rozbalit vše xargs ???
    Z hlediska vhodnosti je toto řešení až na posledním místě, protože spouští zbytečně tisíc procesů (na každý soubor zvlášť).
    30.10.2003 21:19 Zdeněk Štěpánek | skóre: 57 | blog: uz_mam_taky_blog | varnsdorf
    Rozbalit Rozbalit vše proc to delat jednoduse kdyz to jde slozite?
    Zdravim Mozna jsem natvrdlej, ale muzete mi nekdo sem napsat skript, kterej me ve smycce for..do..done bude postupne do promenny $soubor cpat jednotlivy soubory v aktualnim adresari? kdyz pak doprostred smycky dam echo $soubor, tak abych dostal vypis souboru podobny vypisu prikazu ls (ale v jednom sloupecku a bilim pismem). Ze skriptu uvedeneho vyse jsem vyplodil, ze toto je to co potrebuju, samozrejme to nefunguje #!/bin/bash koren=$(pwd) for soubor in *; do echo soubor; done Diky Zdenek
    www.pirati.cz - s piráty do parlamentu i jinam www.gavanet.org - czfree varnsdorf
    31.10.2003 02:27 C.
    Rozbalit Rozbalit vše proc to delat jednoduse kdyz to jde slozite?
    for soubor in .* *; do echo $soubor; done Pozor na mezery v nazvech souboru - umeji pekne zamotat hlavu ;)
    31.10.2003 10:30 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
    Rozbalit Rozbalit vše proc to delat jednoduse kdyz to jde slozite?
    A aby vám hlavu nezamotali, tak
    for soubor in .* *; do echo "$soubor"; done
    viz.
    [work]# touch wd\ kuk\$.aj\*
    [work]# ls
    wd kuk$.aj*
    [work]# for soubor in *; do echo "$soubor"; done
    wd kuk$.aj*
    
    XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
    31.10.2003 11:26 Zdenek Stryhal
    Rozbalit Rozbalit vše proc to delat jednoduse kdyz to jde slozite?
    Zkuste toto: for in `ls -1` Hodne uspechu! ZS
    31.10.2003 16:18 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
    Rozbalit Rozbalit vše proc to delat jednoduse kdyz to jde slozite?
    To není vůbec dobrý nápad. Zkuste si do toho adresáře vytvořit pár souborů rypu
    touch \*\ \*\ \*\ pokus
    a pak třeba
    for i in `ls`;do echo "$i";done
    a pak pro změnu třeba
    for i in `ls`;do echo $i;done
    Expanze je sfiňa :-) V prvním případě to jednou expanduje v příkazu for a v druhém projistoru ještě jednou v příkazu echo a jestli tam dáš ls, nebo ls -1 na tom nic nezmění. Trochu overkill řešení zadání mě napadlo:
    ls|tee /dev/null
    :-D
    XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
    31.10.2003 16:52 Pet
    Rozbalit Rozbalit vše proc to delat jednoduse kdyz to jde slozite?
    Kdyz se mi nechce psat ls -1 --color=never kterezto zatezuje system o neco mene, tak lze pouzit i ls|cat ktere funfuje stejne a je o plnych 10 znaku kratsi nez varianta s tee ;-). Ale myslim, ze v puvodnim dotazu byl vypis jmena souboru pouze jako priklad.
    31.10.2003 17:43 dany
    Rozbalit Rozbalit vše proc to delat jednoduse kdyz to jde slozite?
    ked sa trochu uvedomime, staci dat
    touch \*\ \*\ \*\ pokus
    touch \*\ \*\ \*\ pokus\ \*
    for i in "`ls`";do echo "$i";done
    
    bye :)
    3.11.2003 18:12 Zdeněk Štěpánek | skóre: 57 | blog: uz_mam_taky_blog | varnsdorf
    Rozbalit Rozbalit vše diky vsem
    Zdravim Diky za rady. echo $soubor byl skutecne jen priklad, potrebuju prejmenovavat tisice souboru v adresari. Problem byl samozrejme mezi klavesnici a zidli, mel jsem tam echo soubor, ma tam byt echo $soubor. Divil jsem se proc mi to nekolikrat pod sebou napsalo soubor soubor soubor... proc mi to nedoslo. Zajimavy mi prijde ze si nikdo z vas nevsiml ze mi tam ten $ chybi. Zdenek
    www.pirati.cz - s piráty do parlamentu i jinam www.gavanet.org - czfree varnsdorf
    4.11.2003 16:18 Keson
    Rozbalit Rozbalit vše diky vsem
    Ahoj, ze chybi '$' si jiste vsimlo spousta lidi, hned nasledujici RE: uz ho tam ma :-) Ale ja chtel uvezt priklad, ktery tu jeste nebyl - a resi problemy mezer, koncu radku, hvezdicek a jinych zhovadilosti v nazvech souboru: find . -exec sh -c 'echo "$0" ' {} \; Enjoy
    5.11.2003 18:31 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
    Rozbalit Rozbalit vše diky vsem
    hmm, tak na to mam jednoduzsi:
    find
    XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
    18.12.2003 08:24 Tonik | skóre: 4
    Rozbalit Rozbalit vše Jde vyhledat nekolik pripon najednou
    Zdravim muzu pomoci find hledat najednou nekolik pripon souboru > find -name '*.avi *.mp3....atd" Pujde to nejak.
    Fuky avatar 21.12.2003 21:53 Fuky | skóre: 52 | blog: 4u
    Rozbalit Rozbalit vše RE: Jde vyhledat nekolik pripon najednou
    $ find -regex '.*\(avi\|mp3\)'
    25.3.2009 14:05 jirka012
    Rozbalit Rozbalit vše Re: BASH - II

    jak se da udelat kdyz mam př:

    strace příkaz 2>&1

    a potřebuji aby se ten příkaz měnil podle zadaní argumentu pri spousteni skriptu. Mam například skript ./ahoj.sh FUNKCE ls, takze bych potreboval aby se ten strace vypisoval jako strace ls.

    Založit nové vláknoNahoru

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