abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    včera 22:22 | Upozornění Ladislav Hagara | Komentářů: 2
    včera 17:44 | Nová verze

    Firma Murena představila /e/OS verze 2.0. Jde o  alternativní sestavení Androidu bez aplikací Google. Mezi novinkami je podrobnější nastavení ochrany soukromí před sledováním aplikacemi. Murena prodává několik smartphonů s předinstalovaným /e/OS (Fairphone, repasovaný Google Pixel 5).

    Fluttershy, yay! | Komentářů: 0
    včera 14:33 | Zajímavý software

    Do 30. května lze v rámci akce Warhammer Skulls 2024 získat na Steamu zdarma hru Warhammer 40,000: Gladius - Relics of War.

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

    HelenOS (Wikipedie), tj. svobodný operační systém českého původu založený na architektuře mikrojádra, byl vydán ve verzi 0.14.1. Přehled novinek v poznámkách k vydání. Vypíchnou lze nabídku Start. Videopředstavení na YouTube.

    Ladislav Hagara | Komentářů: 2
    23.5. 23:22 | Zajímavý software

    BreadboardOS je firmware pro Raspberry Pi Pico (RP2040) umožňující s tímto MCU komunikovat pomocí řádkového rozhraní (CLI). Využívá FreeRTOS a Microshell.

    Ladislav Hagara | Komentářů: 0
    23.5. 16:55 | Nová verze

    Vývojáři KDE oznámili vydání balíku aplikací KDE Gear 24.05. Přehled novinek i s náhledy a videi v oficiálním oznámení. Do balíku se dostalo 5 nových aplikací: Audex, Accessibility Inspector, Francis, Kalm a Skladnik.

    Ladislav Hagara | Komentářů: 6
    23.5. 12:55 | Nová verze

    Byla vydána (𝕏) nová verze 18.0.0 open source webového aplikačního frameworku Angular (Wikipedie). Přehled novinek v příspěvku na blogu.

    Ladislav Hagara | Komentářů: 0
    22.5. 23:44 | Pozvánky

    V neděli 26. května lze navštívit Maker Faire Rychnov nad Kněžnou, festival plný workshopů, interaktivních činností a především nadšených a zvídavých lidí.

    Ladislav Hagara | Komentářů: 0
    22.5. 16:33 | Nová verze

    Byla vydána nová stabilní verze 3.20.0, tj. první z nové řady 3.20, minimalistické linuxové distribuce zaměřené na bezpečnost Alpine Linux (Wikipedie) postavené na standardní knihovně jazyka C musl libc a BusyBoxu. Z novinek lze vypíchnou počáteční podporu 64bitové architektury RISC-V.

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

    Společnost Jolla na akci s názvem Jolla Love Day 2 - The Jolla comeback představila telefon se Sailfish OS 5.0 Jolla Community Phone (ve spolupráci se společností Reeder) a počítač Jolla Mind2 Community Edition AI Computer.

    Ladislav Hagara | Komentářů: 18
    Podle hypotézy Mrtvý Internet mj. tvoří většinu online interakcí boti.
     (82%)
     (4%)
     (7%)
     (7%)
    Celkem 524 hlasů
     Komentářů: 16, poslední 14.5. 11:05
    Rozcestník

    Unixové nástroje – 1 (úvod, cat, head, tail)

    8. 10. 2009 | David Watzke | Návody | 41812×

    Jednou z unixových filozofií je kombinování jednoduchých utilit k dosažení složitých cílů. V tomto novém seriálu si postupně představíme celou řadu základních unixových nástrojů pro příkazovou řádku. V prvním dílu to jsou cat (zcat, tac), headtail.

    Obsah

    Úvod

    link

    Doug McIlroy, který vynalezl unixové roury, řekl, že unixová filizofie je toto: Piš programy, které dělají jednu věc a dělají ji dobře. Piš programy tak, aby spolu spolupracovaly. Piš programy, které pracují s textovými proudy, protože to je univerzální rozhraní.

    Proč tohle všechno? Je zde několik podstatných výhod.

    • Kombinací jednoúčelových programů lze dosáhnout i velmi složitých cílů.
    • Jednoduché programy jsou méně náchylné na chyby a bývají skvěle odladěné a optimalizované pro svůj účel.
    • Zlepšení algoritmu v nějaké utilitě se hned projeví ve všech skriptech, které ji využívají.

    Spoustu historických unixových utilit převzalo a (většinou) dle Single Unix Specification (SUS) implementovalo GNU. Díky tomu jsou tyto příkazy dostupné ve všech běžných distribucích GNU/Linuxu. Balíček obsahující tyto příkazy se jmenuje coreutils. V tomto seriálu se postupně budu zabývat jednotlivými příkazy z coreutils. Dozvíte se vždy něco z historie i z praxe.


    cat (zcat, tac)

    link

    Příkaz cat slouží ke spojení nebo vypsání obsahu souborů (s libovolným obsahem). Název vznikl z anglického „catenate“ (spojit).

    Standardních použití je několik. Pro prosté vypsání obsahu souboru na terminál použijeme:

    cat soubor.txt

    Pro spojení několika souborů (v daném pořadí) do jednoho lze použít:

    cat soubor.txt soubor2.txt soubor3.txt > velky_soubor.txt

    Dle standardu by měla každá implementace příkazu cat podporovat kromě předvedených vlastností ještě přepínač -u, který zajistí okamžitý výpis každého bytu ihned po jeho přečtení ze zdroje.

    BSD a GNU (coreutils) verze programu cat navíc přínášejí několik vlastních rozšíření.

    Přepínač (GNU/BSD)Popis
    -b (GNU má i --number-nonblank) očísluje všechny neprázdné řádky
    -n (GNU má i --number) očísluje všechny řádky
    -s (GNU má i --squeeze-blank) nahradí více sousedících prázdných řádků za jeden
    -v (GNU má i --show-nonprinting) zobrazí netisknutelné znaky (kromě tabů a konce řádků)
    -t jako -v, ale navíc zobrazí taby jako ^I
    -e jako -v, ale navíc zobrazí konce řádků jako $

    Příkaz cat bývá tak často používán zbytečně tam, kde není třeba, že dokonce vznikla zkratka UUOC (Useless Use of Cat, zbytečné používání cat). Typické zbytečné použití cat se objevuje v případech, kdy se člověk snaží poslat obsah jednoho souboru do roury ke zpracování jiným příkazem.

    # za „grep“ si můžete dosadit libovolný příkaz, který pracuje se vstupem
    cat soubor.txt | grep "slovo"
    

    Toto je ovšem zbytečné. Nejen proto, že obecně lze napsat kratší příkaz,

    <soubor.txt grep "slovo"
    # nebo (běžnější ekvivalentní zápis)
    grep "slovo" soubor.txt
    

    ale i proto, že se spustí jeden zcela zbytečný proces.

    Ekvivalentem tohoto příkazu na operačních systémech VMS, CP/M, DOS, OS/2 a Windows je příkaz type.

    Když je řeč o utilitě cat, sluší se zmínit i relevantní odvozené prográmky zcat, bzcatxzcat, sloužící k témuž účelu, ovšem pracující s komprimovanými soubory gzip, bzip2, lzma.

    zcat soubor1.txt.gz soubor2.txt.gz > soubory.txt
    bzcat konfiguracni_soubor.conf.bz2
    xzcat zdrojak.tar.xz | tar xfv -
    

    Další odvozenou utilitou je tac, který také spojuje soubory, ale vypisuje je po řádkách od poslední k první, z čehož vychází i název – tac je totiž cat pozpátku.


    head

    Utilita head (angl. hlava, horní část) slouží primárně k zobrazení prvních několika řádků souboru (výchozí počet řádků k zobrazení je 10). Systém, který tento program obsahoval jako první, se jmenuje PWB/UNIX, jehož první verze vyšla v roce 1977.

    Existují dva základní způsoby použití, první se používal spíše v minulosti.

    # oba příkazy vypíšou prvních 15 řádků souboru
    head -15 soubor.txt
    head -n15 soubor.txt
    

    Novější verze head mají přepínač -c, který slouží k vypsání určitého počtu počátečních bytů. Podporují také záporné hodnoty jako argumenty přepínačů -c-n, viz ukázku:

    # vypíše soubor.txt, ale vynechá posledních 20 řádků
    head -n -20 soubor.txt
    
    # vypíše soubor2.txt, ale vynechá posledních 100 bytů
    head -c -100 soubor2.txt
    

    tail

    link

    Prográmek tail (angl. ocas, zadní/spodní část) je podobný předchozímu příkazu head, ale na rozdíl od něj funguje opačně, tedy zobrazuje posledních několik řádků. I tail se poprvé objevil v PWB/UNIXu.

    # vypíše posledních 10 řádků souboru
    tail soubor.txt
    
    # vypíše posledních 20 řádků souboru
    tail -n20 soubor.txt
    
    # vypíše soubor od 20. řádku dále
    tail -n +20 soubor.txt
    

    Tolik k použitím obdobným příkazu head. Tail má ještě jeden zajímavý přepínač, a tím je -f. Pomocí něj lze dosáhnout monitorování souboru. Funguje to tak, že sleduje nějaký soubor a postupně vypisuje obsah, který přibývá na jeho konec. Lze takto sledovat například systémový log.

    tail -f /var/log/messages

    Nástroj, který umožňuje takto monitorovat výstup příkazu, se jmenuje watch a zmíním se o něm v některém z příštích dílů.

           

    Hodnocení: 95 %

            š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ář

    xxxs avatar 8.10.2009 01:07 xxxs | skóre: 25 | blog: vetvicky
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)

    ak sa tempo prilis nezrychli, tak sa aj nieco zaujimave naucim. je to predychatelnejsie ako man stranky. dik.

    8.10.2009 08:37 filo | skóre: 22 | blog: FiloBlog | Ostrava
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)
    Taky děkuju, příjemně se to čte.
    Pavel Půlpán avatar 8.10.2009 17:58 Pavel Půlpán | skóre: 22 | Trutnov
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)
    Jj, pokud Dejv vydrží, bude z toho povedenej seriál, kerej budeme kdykoliv moct cli-lamám a cli-ignorantům vomlátit o držky. :-D
    An infinite number of monkeys typing into GNU Emacs would never make a good program.
    9.10.2009 13:26 Robert Krátký | skóre: 94 | blog: Robertův bloček
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)
    pokud Dejv vydrží, bude z toho povedenej seriál
    Sestavujeme s Davidem seznam všech možných příkazů, o kterých by bylo fajn napsat (a pokusili jsme se je seskupit podle významu do článků). Vzhledem k tomu, jak je už teď ten seznam dlouhý, si myslím, že by se David nezlobil, kdyby se některých dílů chopili i jiní autoři. Pokud máte někdo zájem, ozvěte se na redakce AT abclinuxu.cz.
    Pavel Půlpán avatar 9.10.2009 16:04 Pavel Půlpán | skóre: 22 | Trutnov
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)
    Předpokládám, že se seznam zveřejní, dejme tomu v blogu?! Možná bych se taky při troše volného času něčeho pokusil ujmout. ;-)
    An infinite number of monkeys typing into GNU Emacs would never make a good program.
    David Watzke avatar 9.10.2009 17:22 David Watzke | skóre: 74 | blog: Blog... | Praha
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)
    Určitě bych se nezlobil a ten seznam klidně pak zveřejním v blogu a můžem ho upravovat podle dobrých nápadů v komentářích.
    “Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
    Prcek avatar 8.10.2009 03:04 Prcek | skóre: 43 | Jindřichův Hradec / Brno
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)
    cat soubor.txt | grep "slovo"
    Tak tohle používám pořád a teď se dozvím, že je to "špatně" :-).

    Mimochodem, ve větě "...ale vypisuje je po řádkách..." by mělo být spíš "řádcích", jelikož všude jinde používáš "ten řádek" a ne "ta řádka" ;-). A možná by to chtělo ukázat i nějaký složitější kouzla s těmi programy - třeba to zapojení do roury, když už se o ní zmiňuješ. Ale jinak chválím, základy je třeba umět a ten seriál by mohl být přínosný začátečníkům i pokročilým (jak se ukázalo u mě a catu :-)).
    Člověk je takový, jak vypadá... A já vypadám jako pravá, nefalšovaná děvka!!!
    8.10.2009 05:15 deda.jabko | skóre: 23 | blog: blog co se jmenuje "každý den jinak" | za new york city dvakrát doleva a pak už se doptáte
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)
    Tak tohle používám pořád a teď se dozvím, že je to "špatně" :-).
    neni to spatne... jenom si to mysli nekolik anticat-fasistu... :-]]

    ja ten zapis ,,cat foo | bar'' mam radsi, protoze kdyz se ladi nejaka slozitejsi roura je mozne velice jednoduse vymenit vstup... napr. kdyz chcu udelat nejaky dump z logu tak si rouru odladim pro vstup head -n 100 a kdyz jsem spokojeny s vystupem prohodim jenom head za cat nebo treba zcat a je vystarano...

    navic, ne kazdy program ma jako argument vstupni soubor jako grep... takze pouziti cat je evidentne obecnejsi reseni
    Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
    David Watzke avatar 8.10.2009 08:47 David Watzke | skóre: 74 | blog: Blog... | Praha
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)
    Když použiješ to přesměrování, tak to není vstupní argument, ale shell mu to dá na stdin. Podobně jako kdybys použil ten cat, ale efektivněji.
    “Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
    8.10.2009 11:22 posejdon
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)
    pouzivam cat neco.txt|grep vyraz, protoze jsem liny se podivat do napovedy, jestli nazev souboru je prvni nebo posledni parametr a jestli se to vola s prepinacem nebo bez. Samozrejme to takto pouzivam, kdyz neco pisu primo do radky, kdybych mel psat nejakej skriptik, tak se mozna hecnu a na tu syntaxi se podivam.
    8.10.2009 12:12 Andrej | skóre: 51 | blog: Republic of Mordor
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)

    Toto je odpověď à la absurdní drama. :-D David se snažil naznačit, že není potřeba si pamatovat způsob zadávání vstupního souboru.

    Pokud si to čirou náhodou pamatuju, můžu napsat

    grep franta /etc/passwd
    

    Tady příslušný soubor otevře přímo grep. Pokud si pořadí parametrů pamatovat nechci, nikdo mě k tomu nenutí. Může to v konečném důsledku znamenat dokonce i méně práce pro můj počítač, pokud jde o počet současně existujících file descriptorů. Místo parametru použiji vymoženost zabudovanou přímo v shellu:

    grep franta < /etc/passwd
    

    Tady soubor otevře shell a grep bude prostě číst svůj standardní vstup. Žádný proces navíc, žádný file descriptor navíc.

    8.10.2009 12:31 Radek Hladik | skóre: 20
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)

    Tohle je pravda a i tak jsem to z článku pochopil. Mně na tom ale vadí jedna věc. Když zapíšu

    grep franta < /etc/passwd
    

    tak to je v obráceném pořadí (kolony se čtou zleva doprava), takže třeba

    grep franta </etc/passwd | sort | uniq
    

    a když naopak zapíšu

    </etc/passwd grep franta | sort | uinq
    

    tak se mi nelíbí, že ta šipka směřuje na druhou stranu. A navíc, pokud budu vypisovat nějakej delší soubor, tak ta | to pěkně vizuálně oddělí.

    Ale jinak se myslím všichni shodneme, že se tu bavíme o marginální okrajovosti a jde spíše jen o takové relaxační potlachání :-)

    xkucf03 avatar 8.10.2009 13:57 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)

    kolony?

    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-DK, Relational pipes
    8.10.2009 14:40 Radek Hladik | skóre: 20
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)

    Ano, já se o tom vždycky učil jako o koloně.

    Roura, trubka, kolona, anonymní roura, konvenční roura (anglicky pipeline) je v unixových systémech původním nástrojem pro spojování procesů do řetězce pomocí vzájemného propojení standardních proudů tak, že je vždy výstup (stdout) procesu nasměrován přímo do vstupu (stdin) následujícího procesu.   Viz http://cs.wikipedia.org/wiki/Roura_%28Unix%29

    Takže | je krásně česky pajpa a více zřetězených příkazů pomocí pajpy je kolona... Nebo třeba z http://www.kiv.zcu.cz/~txkoutny/common/ups/skoleni/skoleni-unix-3.html :

    |       roura (pipe) - řazení příkazů do kolony

    xkucf03 avatar 8.10.2009 15:21 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)

    Vím, o co jde :-) ale „kolona“ zní naprosto příšerně :-)

    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-DK, Relational pipes
    8.10.2009 15:22 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)
    Kolona vypadá, zní a je úplně v pořádku :-)
    Ještě na tom nejsem tak špatně, abych četl Viewegha.
    8.10.2009 23:35 snehuliak
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)

    Mozno kolona je uplne poriadku ale ani mne sa velmi nepaci. Aj v Slovencine mame slova ktore su spisovne a "uplne vporaidku" ale nikto ich nepouziva napriklad:

    posilnovna (nespravne posilovna), hovnik (nespravne pohovka), lezun (nespravne batola) a hranolceky (nespravne hranolky)...

    Inak spisovny jazyk je vynalez akademikov, skutocny jazyk je taky ktory sa pouziva a ktorym sa ludia dorozumeju. Inak spisovna anglictina v podstate neexistuje takze neverte ucitelom anglictiny ak vam povedia ze sa nieco "takto" nehovori alebo ze je nieco nespravne - urcite sa da najst priklad kedy sa to tak pouziva ;)

    Inak kolona mi evokuje anglicke colon [kolon] co je dvojbodka ;)

    9.10.2009 09:35 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)
    Tak já jsem výjimečně o spisovnosti vůbec nemluvil :-) Kolona je … no prostě kolona, řada aut od nevidím do nevidím na cestě mezi Prahou a Brnem :-), no nebo řada rour v shellu. Často taky od nevidím do nevidím.
    Ještě na tom nejsem tak špatně, abych četl Viewegha.
    Jiří Svoboda avatar 9.10.2009 10:04 Jiří Svoboda | skóre: 37 | blog: cat /dev/mind | Prostějov
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)
    Nebo destilační kolona. :-) A zrovna ta mi přijde shellu nejpodobnější. Každý další příkaz něco získá z výsledku předchozího. :-)
    9.10.2009 11:26 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)
    Vím, že chemici mají taky nějakou kolonu, ale nic o tom nevím. Ale destilační kolona zní sexy :-)
    Ještě na tom nejsem tak špatně, abych četl Viewegha.
    Jakub Lucký avatar 9.10.2009 12:22 Jakub Lucký | skóre: 40 | Praha
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)
    A taky mají frakční kolonu, pokud mě má rok a půl chemií netknutá paměť nešálí... A snad je to dokonce totéž...
    If you understand, things are just as they are; if you do not understand, things are just as they are.
    9.10.2009 15:49 Michal Kubeček | skóre: 72 | Luštěnice
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)
    V principu je to totéž, ale frakční destilace bývá důkladnější, takže umožňuje lépe oddělit složky s blízkým bodem varu.
    9.10.2009 15:48 Michal Kubeček | skóre: 72 | Luštěnice
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)
    Seriál M*A*S*H jste neviděl? Tam se o ní mluví každou chvíli…
    10.10.2009 14:44 thefox | skóre: 25 | Ťapešovo
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)
    Pred šírením týchto urban legends o "neuveriteľných spisovných slovách" by bolo vhodné konzultovať slovník (napr. online na http://slovnik.juls.savba.sk/). Hovník ani lezúň neexistujú (dokonca o tom lezúňovi som teraz čítal prvýkrát), pohovka aj batoľa sú normálne spisovné slová.

    Mne colon pripomína niečo úplne iné, kto si užil kolonoskopiu, tomu to asi zostane...
    0118 999 881 999 119 725 3
    xxxs avatar 11.10.2009 00:41 xxxs | skóre: 25 | blog: vetvicky
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)
    to crevo je ok, tiez je to kolona.
    14.10.2009 21:35 Michal Kubeček | skóre: 72 | Luštěnice
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)
    Ty výrazy na mne působí, jako by je vymýšleli podobní bojovníci za nedorozumění mezi národy jako ti, kteří se od rozdělení Jugoslávie usilovně snaží ze srbochorvatštiny vyrobit dva různé jazyky.
    14.10.2009 15:25 Ash | skóre: 53
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)
    posilnovna (nespravne posilovna), hovnik (nespravne pohovka), lezun (nespravne batola) a hranolceky (nespravne hranolky)...

    A nechtěl byste rovnou mluvit česky? (Teda až na batole).
    Jakub Lucký avatar 14.10.2009 16:38 Jakub Lucký | skóre: 40 | Praha
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)
    Nechtěli... to je na Slovensku za pokutu ;)
    If you understand, things are just as they are; if you do not understand, things are just as they are.
    Jendа avatar 8.10.2009 16:18 Jendа | skóre: 78 | blog: Jenda | JO70FB
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)
    Používá tu někdo pojmenování pípa?
    8.10.2009 20:02 Kvakor
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)
    Mám pocit, že jsem kdysi někde v nějakém starém (10let+) návodu viděl, bohužel googlení mi nalezlo pouze stránky s pivní tématikou :-)

    Mimo toho jsem slyšel i termíny fífa a pajpa (nejspíš počeštěné pipe) a pro pipeline dokonce termín rourárna (nejspíš inspirace zpotvořeným slovníkem strážníka Crabtreeho z britského seriálu "Haló, haló" :-) ).
    8.10.2009 20:15 Jarda
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)
    Ja pouzivam slova pipa nebo roura, nemam rad pocestena anglicka slova (napr. pajpa, pisicko, apod.)
    8.10.2009 13:34 Michal Kubeček | skóre: 72 | Luštěnice
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)

    Pro mne je problém v něčem jiném. Potřebuju-li vložit filtr na začátek, tak při použití cat mám

      cat file | filter1 -args1 | filter2 -args2 ...
      cat file | filter0 -args0 | filter1 -args | filter2 -args2 ...
    

    tj. jen vložím filtr tam, kam je potřeba. Oproti tomu bez cat to vypadá takto:

      filter1 -args1 <file | filter2 -args2 ...
      filter0 -args0 <file | filter1 -args1 | filter2 -args2 ...
    

    tj. musím vytáhnout to přesměrování a přesunout ho před filtr, který byl původně první. A tohle nepohodlí mi za jeden ušetřený proces nestojí, zvlášť jde-li o interaktivní práci, kdy stejně počítač drtivou většinu času čeká na mne.

    Ano, vím, že bash umožňuje napsat přesměrování před příkaz. Ale jednak to považuji za nechutnou prasárnu, jednak si moc nejsem jistý přenositelností této konstrukce.

    Jendа avatar 8.10.2009 16:24 Jendа | skóre: 78 | blog: Jenda | JO70FB
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)
    <file filter1 -args1 | filter2 -args2
    <file filter0 -args0 | filter1 -args1 | filter2 -args2
    Zdá se mi to takové nezvyklé, možná i hůř čitelné než s catem (možná je to proto, že mám v PS1 zobáček).
    8.10.2009 17:32 Michal Kubeček | skóre: 72 | Luštěnice
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)
    Viz poslední odstavec příspěvku, na který reagujete (tvz. preventivní odpověď :-) ).
    Jendа avatar 8.10.2009 17:41 Jendа | skóre: 78 | blog: Jenda | JO70FB
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)
    Aha :-)

    (Šíří se to! Kromě Jirsáka už mi má potřebu vykat i Kubeček! Pomóc!)
    xxxs avatar 8.10.2009 17:55 xxxs | skóre: 25 | blog: vetvicky
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)

    kamo, asi starnes.

    8.10.2009 19:15 Michal Kubeček | skóre: 72 | Luštěnice
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)
    To není nic osobního, já tu vykám všem. :-) Tedy kromě těch, se kterými si tykám v reálu.
    8.10.2009 17:13 Robo
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)

    njn, ak niekto vytahuje pri debate o scriptovani v shelly argument, ze pouzitie cat-u je neefektivne je to smiesne; cele scriptovanie v shelly je neefektivne a na komplexnejsie ulohy sa nehodi ;-)

    8.10.2009 10:12 Robo
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)

    +1, pametat si argumenty pre vstupny subor roznych programov je nad moje sily :-)

    xkucf03 avatar 8.10.2009 11:56 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)

    Asi tak. :-)

    cat soubor.txt | grep slovo | … mi přijde přehlednější – člověk vidí ty jednotlivé | a hned si to rozdělí na posloupnost příkazů.

    Zápisem grep slovo < soubor.txt | … se sice ušetří vytváření procesu catu, ale vetšinou je to úplně jedno.

    Zápis grep slovo soubor.txt mi přijde trochu proti té unixové filosofii, grep totiž musí umět pracovat se soubory, i když by stačilo, aby pracoval jen se standardním vstupem/výstupem a vše ostatní se řešilo rourami/přesměrováním.

    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-DK, Relational pipes
    8.10.2009 13:25 kuly
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)
    musí umět pracovat se soubory, i když by stačilo, aby pracoval jen se standardním vstupem/výstupem

    Vzhledem k tomu, že všechno je soubor, tak se soubory pracovat umí. Použití jiného souboru než stdin je záležitost na dva řádky.
    xkucf03 avatar 8.10.2009 14:22 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Grep, man a redundance

    Plus ještě další if-větvení + zpracování parametrů příkazové řádky + manuálové stránky + ošetření dalších chyb… je toho víc.

    Na druhou stranu grep toho dělá víc než obyčejné grepování (např. rekurzivní procházení adresáře, kdy grepuje všechny soubory a na výstup vypisuje nejen řádky, ale i název souboru, ze kterého pocházejí), takže by se soubory pracoval tak jako tak.

    BTW: když jsem si teď procházel zdrojáky grepu, tak jsem si všimul, že se tam definuje:

    /* Long options equivalences. */
    static struct option const long_options[] =
    {
      {"after-context", required_argument, NULL, 'A'},
      {"basic-regexp", no_argument, NULL, 'G'},
      {"before-context", required_argument, NULL, 'B'},
      {"binary-files", required_argument, NULL, BINARY_FILES_OPTION},
      {"byte-offset", no_argument, NULL, 'b'},
      {"context", required_argument, NULL, 'C'},
      {"color", optional_argument, NULL, COLOR_OPTION},
    …

    tedy parametry příkazové řádky a totéž potom v nápovědě:

    printf (_("Usage: %s [OPTION]... PATTERN [FILE] ...\n"), program_name);
          printf (_("\
    Search for PATTERN in each FILE or standard input.\n\
    Example: %s -i 'hello world' menu.h main.c\n\
    \n\
    Regexp selection and interpretation:\n"), program_name);
          printf (_("\
      -E, --extended-regexp     PATTERN is an extended regular expression\n\
      -F, --fixed-strings       PATTERN is a set of newline-separated strings\n\
      -G, --basic-regexp        PATTERN is a basic regular expression\n\
      -P, --perl-regexp         PATTERN is a Perl regular expression\n"));
          printf (_("\
      -e, --regexp=PATTERN      use PATTERN as a regular expression\n\
      -f, --file=FILE           obtain PATTERN from FILE\n\
      -i, --ignore-case         ignore case distinctions\n\
    …
    

    A do třetice to musí být ještě v manuálové stránce.

    Není na to nějaká knihovna nebo postup, abych definoval na jednom místě krátký parametr, dlouhý parametr a popis a nápověda a manuálová stránka se z toho jen vygenerovala?

    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-DK, Relational pipes
    Jakub Lucký avatar 8.10.2009 14:35 Jakub Lucký | skóre: 40 | Praha
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)
    s catem to trvá déle... Zkuste to změřit přes time...
    If you understand, things are just as they are; if you do not understand, things are just as they are.
    8.10.2009 14:33 Ash | skóre: 53
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)
    Pro někoho, kdo si myslí, že každý program umí číst z roury, a proto cat rulez, je cat jistě obecnější řešení :)
    8.10.2009 11:57 Radek Hladik | skóre: 20
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)

    Taky mi to připadá takový přehlednější a čistší. Jeden program dělá grepování a druhý čtení ze souboru. A upřímně řečeno, kdy naposledy jste někdo psal takovou kolonu, že by ten jeden proces navíc hrál tak zásadní roli? Ale líbí se mi to, že si každý může vybrat, ať je lenoch jako já, nebo anticat fašista :-)

    Ale nejvíc mě to štvalo, když jistý nejmenovaný profesor u zkoušky považoval přebytečné cat za chybu zhoršující známku o stupeň. Ale alespoň to oznámil předem...

    David Watzke avatar 8.10.2009 12:14 David Watzke | skóre: 74 | blog: Blog... | Praha
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)
    Ty se označuješ za lenocha a píšeš zbytečnej příkaz navíc, to je pozoruhodný :-D
    “Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
    8.10.2009 12:24 Radek Hladik | skóre: 20
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)

    Jo, možná to zní divně, ale je to tak :-) Napsat jeden příkaz navíc je míň práce, než měnit něco, co používám už dlouho :-)

    10.10.2009 09:16 rich
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)
    tak to se ani nedivim, ze to v nasi politice vypada tak jak to vypada, kdyz lide uvazuji podobnym zpusobem. ale to uz k smichu moc neni
    8.10.2009 17:07 xyz
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)

    Stará známá pravda říká, že línej se nejvíc nadře.

    8.10.2009 19:04 error414 | skóre: 12 | blog: error414
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)

    kravina, lenost je motor lidstva

    D.A.Tiger avatar 10.10.2009 11:52 D.A.Tiger | skóre: 8 | Brno
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)
    Jj. z lenosti vzniklo nejvíc vynálezů :-) Potom ještě pro vojenské účely...
    Radost z toho, že někdo objeví něco nového, je omyl starý 6000 let... (Jean Paul) | anthill inside
    Drom avatar 12.10.2009 00:10 Drom | skóre: 24 | Kdyne
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)
    Jo jo, skoda ze nejsou lidi dost liny, aby prestali valcit. Pak se bude konecne moct rozvinout Lazy Power :D
    8.10.2009 09:52 Leoš Literák | skóre: 74 | blog: LL | Praha
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)

    nedavno jsem na mandrive objevil zkratku tailf, usetrim dva uhozy :-)

    Zakladatel tohoto portálu. Twitter, LinkedIn, blog, StackOverflow
    8.10.2009 10:29 darth.vader
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)
    ten 'tail -f soubor' je dobra vec. Jeste s oblibou vyuzivam less. Tam lze pomoci velkeho 'F' docilit stejneho efektu akorat s tim, ze tento mod muzete kdykoliv prerusit a nasledne se pomoci vyhledavacich funkci vratit k zajimavemu mistu.
    8.10.2009 10:35 mimi.vx | skóre: 37 | blog: Mimi.VX | Praha
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)
    misto tail -f soubor existuje prikaz 'tailf'
    USE="-gnome -kde";turris
    8.10.2009 13:36 Michal Kubeček | skóre: 72 | Luštěnice
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)
    To rozhodně není standardní příkaz. Možná to jen některá distribuce defaultně nastavuje jako alias. To bych stejně tak mohl tvrdit, že existují "příkazy" ls-l nebo cd..
    Prcek avatar 8.10.2009 18:21 Prcek | skóre: 43 | Jindřichův Hradec / Brno
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)
    No já nevím, ale u mě na Gentoo jsem zkoušel which tailf a vrátilo mi to /usr/bin/tailf, což je normální binárka, alias by to asi takhle nenašlo.
    Člověk je takový, jak vypadá... A já vypadám jako pravá, nefalšovaná děvka!!!
    Marián Kyral avatar 8.10.2009 18:59 Marián Kyral | skóre: 29 | blog: Sem_Tam | Frýdek-Místek
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)

    Z man tailf:

     

    It is similar to tail -f but does not access the file when it is not growing.

     

    8.10.2009 10:40 Mazarik
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)

    K tail -f existuje este tailf, ktory na rozdiel od prveho nemeni casy pristupu k sledovanemu suboru.

    8.10.2009 12:35 Radovan Garabík
    Rozbalit Rozbalit vše tail -F

    a existuje aj GNU extension tail -F, ktorá je pre sledovanie /var/log/* súborov podstatne výhodnejšia ako tail -f .... 

    8.10.2009 13:35 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)
    U příkazu tail bych vypíchnul spíše -F. Ten zvládá i přesouvání souborů, což je u logů poměrně typické.
    When your hammer is C++, everything begins to look like a thumb.
    8.10.2009 14:45 maertien(not logged in)
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)

    Nu, pekny navod. Ale nebyla zde nekde nejaka obdobna ucebnice? ;-)

    8.10.2009 14:48 maertien(not logged in)
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)

    Dobra. Omlouvam se. Ucebnice je vyrazne strucnejsi. :-)

    8.10.2009 16:34 Robo
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)

    velmi dobra ucebnica je Advanced Bash Scripting Guide

    8.10.2009 19:10 YYY | skóre: 29 | blog: martinek
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)
    Jasny, ale ja mel na mysli ucebnici zde na abicku.
    otasomil avatar 8.10.2009 16:21 otasomil | skóre: 39 | blog: puppylinux
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)

    Velmi casto pouzivam:

    cat /dev/sda1 > zaloha_windows_datum.bin

    a nazpet

    cat zaloha_windows_datum.bin > /dev/sda1

    HDD oddil je vlastne "jenom" takovy "kus textu" .... zrovna u me ma 15 GB.

    K čemu hudba, která nevede k extázi... Stop MDMA !!! I spam umí být roztomilý
    8.10.2009 17:34 Michal Kubeček | skóre: 72 | Luštěnice
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)
    Na to stačí i cp. :-)
    xkucf03 avatar 8.10.2009 18:07 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše dd vs. cat

    dd s vhodně nastaveným bs=x by měl být efektivnější, ne?

    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-DK, Relational pipes
    xkucf03 avatar 8.10.2009 18:16 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: dd vs. cat

    Tohle testuje jenom čtení, ale stejně:

    $ dd if=záloha-2009-04-10.7z of=/dev/null bs=1M
    9+1 vstoupivších záznamů
    9+1 vystoupivších záznamů
    10 333 503 bajtů (10 MB) zkopírováno, 0,00965979 s, 1,1 GB/s 
    
    $ cat záloha-2009-04-10.7z | dd of=/dev/null bs=1M
    9+1 vstoupivších záznamů
    9+1 vystoupivších záznamů
    10 333 503 bajtů (10 MB) zkopírováno, 0,0206071 s, 501 MB/s
    
    $ dd if=záloha-2009-04-10.7z bs=1M > /dev/null
    9+1 vstoupivších záznamů
    9+1 vystoupivších záznamů
    10 333 503 bajtů (10 MB) zkopírováno, 0,00981492 s, 1,1 GB/s
    
    $ <záloha-2009-04-10.7z dd bs=1M > /dev/null
    9+1 vstoupivších záznamů
    9+1 vystoupivších záznamů
    10 333 503 bajtů (10 MB) zkopírováno, 0,00989328 s, 1,0 GB/s
    
    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-DK, Relational pipes
    otasomil avatar 8.10.2009 19:30 otasomil | skóre: 39 | blog: puppylinux
    Rozbalit Rozbalit vše Re: dd vs. cat

    >>> 1,1 GB/s ???

    Ten soubor (if) mate predpokladam v ramdisku. Pac ta rychlost je opravdu monstrozni.

    Jakou rychlosti poslete do /dev/null soubor vetsi velikosti (radove nekolik GB) a nebo rovnou filesystem (if=/dev/sd*) ?

    K čemu hudba, která nevede k extázi... Stop MDMA !!! I spam umí být roztomilý
    xkucf03 avatar 8.10.2009 19:50 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: dd vs. cat

    Na ramdisku není, je to na ex4 na LVM na šifrovaném disku. :-)

    Ale nebylo to první čtení toho souboru, takže se data brala z diskové cache. První čtení bylo jen kolem 40 MB/s

    $ dd if=soubor.bin bs=1M of=/dev/null
    11+1 vstoupivších záznamů                                                     
    11+1 vystoupivších záznamů                                                    
    12 340 695 bajtů (12 MB) zkopírováno, 0,310885 s, 39,7 MB/s                   
    
    $ dd if=soubor.bin bs=1M of=/dev/null
    11+1 vstoupivších záznamů
    11+1 vystoupivších záznamů
    12 340 695 bajtů (12 MB) zkopírováno, 0,0137188 s, 900 MB/s
    
    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-DK, Relational pipes
    8.10.2009 23:12 H o n z a
    Rozbalit Rozbalit vše Re: dd vs. cat
    Dobry,

    az na to, ze "#cat cosi > /dev/null" NENI totez jako "#cat cosi | dd of=/dev/null".

    (Tipnu si, ze druhy prikaz pristupuje do pameti dvakrat. Coz se zvlaste u cteni pouze z RAM asi dost projevi)

    Zkusil jsem #time $prikaz a zde je zebricek:

    0.311s -- cp x.vob /dev/null

    0.315s -- cat x.vob > /dev/null

    0.321s -- dd if=x.vob of=/dev/null bs=256k

    0.371s -- dd if=x.vob of=/dev/null bs=1M

    0.719s -- cat x.vob | dd of=/dev/null bs=256k

    0.740s -- cat x.vob | dd of=/dev/null bs=1M

    (cas - REAL; x.vob - 1024MB; RAM DDRII 2GB 666Mhz DualChanel)

    Muj zaver: V jednoduchych pripadech je temer jedno, zda cp, cat nebo dd. Hlavne se vyvarovat se nadbytecnych rour.
    otasomil avatar 8.10.2009 19:34 otasomil | skóre: 39 | blog: puppylinux
    Rozbalit Rozbalit vše Re: dd vs. cat

    Da se to tak nejak srovnat. Pokud bs neni prilis nizke (radove stovky bajtu a min - rychlost jde dolu) tak bych to povazoval za rovnocenne. Jinak samozrejme dd je nastroj primo pro tyto ucely.

    K čemu hudba, která nevede k extázi... Stop MDMA !!! I spam umí být roztomilý
    8.10.2009 19:54 Kvakor
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)
    Nebo pv - pokud něco může trvat delší dobu, je dobré vidět progressbar.
    Jendа avatar 8.10.2009 20:56 Jendа | skóre: 78 | blog: Jenda | JO70FB
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)
    Když pošleš ddčku USR1, tak ti taky ukáže, kolik už toho zkopírovalo.
    xkucf03 avatar 8.10.2009 21:11 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše USR1

    pěkne, to jsem neznal :-)

    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-DK, Relational pipes
    9.10.2009 18:03 me
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)

    anebo si nainstlalovat dd_rescue, pouzivat jej misto dd, na velke objemy dat se hodi lepe.

    8.10.2009 22:15 snehuliak
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)

    cat soubor.txt | grep "slovo"

    Pouzivam vtedy ked ich robim viac, pricom manualne potrebujem zmenit "slovo". Vtedy v bash-i dam len sipku hore a mozem hned zmazat stare slovo a nahradit novym.

    Ak ma subor.txt iba ~100 riadkov, je rozdiel vo "vykone" uplne zanedbatelny, ale rozdiel v editacii riadku nie. Cize vlastne "pomalsia" varianta je rychlejsia.

    Mohol by som sice pouzit makro alebo mini script ale neoplati sa ;)

    David Watzke avatar 8.10.2009 22:25 David Watzke | skóre: 74 | blog: Blog... | Praha
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)
    Nebo můžeš použít přesměrování na začátku
    < soubor.txt grep "slovo"
    “Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
    8.10.2009 23:26 snehuliak
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)

    priznam sa ze premerovanie na zaciatku som nepoznal a ani sa mi nezda velmi logicke.

    kde vsade to funguje? je to iba bash-ovina?

    David Watzke avatar 8.10.2009 23:29 David Watzke | skóre: 74 | blog: Blog... | Praha
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)
    Není to jen bashovina, třeba zsh umí i vícenásobné přesměrování, což je teprve nářez. Třeba:
    echo ahoj > 1.txt > 2.txt > 3.txt
    (a totéž umí i obráceně s <)
    “Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
    8.10.2009 23:43 snehuliak
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)

    zacinam sa zamotavat...

    skusil som si v bashi tvoj priklad - len zo srandy:

    $ echo 1 > 1 > 2 > 3

    A vysledok:

    $ cat 1
    $ cat 2
    $ cat 3
    1

    Otazka je: preco?

    Podrobnejsia otazka je: preco su 1 a 2 prazdne a vysledok je az v 3 ?

    8.10.2009 23:53 Michal Kubeček | skóre: 72 | Luštěnice
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)

    Zjednodušená odpověď: protože přesměrování se vyhodnocují postupně a každé nové "přebije" předchozí. Podrobnější odpověď: každé přesměrování spočívá v něčem jako

      int fd = open(fname, ...);
      dup2(fd, STDOUT_FILENO);
    

    Takže ať jich napíšete, kolik chcete, nakonec pod deskriptorem 1 máte vždy ten poslední soubor. Z podobných důvodů 'cmd >file 2>&1' přesměruje starndardní i chybový výstup do souboru, ale 'cmd 2>&1 >file' přesměruje jen standardní výstup.

    9.10.2009 00:24 snehuliak
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)

    Velmi pekne dakujem za odpoved. Konecne tomu rozumiem. Doteraz som celkom nechapal preco "zalezi na poradi" - iba som tento fakt akceptoval. Priklad s dup2 to uplne vyjasnil (aj ked som pozrel zopar manualovych stranok pre dup2 aby som si vyjasnil ako to funguje).

    Pre tych co tiez nechapu prikladam odkazy na manualove stranky:

    http://www.opengroup.org/onlinepubs/009695399/functions/dup.html
    http://www.mkssoftware.com/docs/man3/dup2.3.asp
    http://linux.die.net/man/2/dup2

    DIKI!!!

     

    8.10.2009 23:47 Michal Kubeček | skóre: 72 | Luštěnice
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)
    Na druhou stranu, zsh je ještě bashovitější než bash, v kladném i záporném smyslu. :-)
    8.10.2009 23:53 snehuliak
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)

    este som skusil

    < soubor.txt
    
    v bashi aj v zsh: Bash nevypise nic, zsh vypise obsah suboru - ako cat ;) 
    
    14.10.2009 15:28 Ash | skóre: 53
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)
    Ale content=$(<soubor.txt); echo $content už to vypíše a docela často se to i hodí.
    8.10.2009 22:25 snehuliak
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)

    A este jedna vec, najprv by bolo mozne dobre vysvetlil co tie rury (kolony) vlastne su a troch o standardnom vstupe a vystupe. Navyse tieto veci sa zavisle aj na pouzitom shelli takze by bolo asi dobre popisat aj shell - ale potom sa obavam ze by sa auto tak skoro ku cat nedostal...

    Inak "Nie je všetko sh, čo sa blyští" - konkretne mam na mysli Ubuntu sh (=dash) a Fedora sh (=bash)... ;)

    Dalibor Smolík avatar 8.10.2009 23:27 Dalibor Smolík | skóre: 54 | blog: Postrehy_ze_zivota | 50°5'31.93"N,14°19'35.51"E
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)

     Díky, velmi zajímavý článek :-)

    Rozdíly v řeči a ve zvyklostech neznamenají vůbec nic, budeme-li mít stejné cíle a otevřená srdce.
    Amarok avatar 9.10.2009 09:55 Amarok | skóre: 33 | blog: blogoblog
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)
    Kdyz team GNU prepisoval vsechny coreutils pro linux, proc uz aspon vse nesjednotili v pouzivani? Prece -v znamena vetsinou "verbose", ale koukam, ze u cat to ma uplne jiny vyznam a na takove odchylky narazim casteji... :(
    GNUniverse - May the source be with you...
    9.10.2009 15:52 Michal Kubeček | skóre: 72 | Luštěnice
    Rozbalit Rozbalit vše Re: Unixové nástroje – 1 (úvod, cat, head, tail)
    Pádným argumentem proti takovému sjednocování bývá jednak zpětná kompatibilita (představa, že stejný přepínač má v různých verzích různé funkce, se mi ani trochu nelíbí), jednak POSIX compliance (rozšíření jsou jedna věc, ale pokud by POSIXem definovaný přepínač u GNU dělal něco jiného, byl by to problém).

    Založit nové vláknoNahoru

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