Portál AbcLinuxu, 2. května 2025 00:13

Kde se vzalo 'cat soubor | příkaz'?

15.11.2005 10:38 | Přečteno: 2699× | Jen tak | poslední úprava: 20.11.2005 12:58

Také jste si všimli, že spousta lidí používá podivnou kombinaci příkazů například pro grepnutí něčeho z obsahu souboru?

cat soubor | grep výraz

Místo jednoduššího, kratšího a IMO i snadněji naučitelného nebo zapamatovatelného (protože logičtějšího):

grep výraz soubor

Tak si říkám, jak na to přišli? Totéž se často provádí i s jinými příkazy než grep. Samozřejmě nejde o nic nového... Spousta z vás určitě zná stránku Useless use of cat. Ale mě by zajímalo, odkud se to bere.

Není to někde v nějakém pochybném HOWTO, které si lidi často čtou? Nebo je to z nějakého podivného důvodu srozumitelnější zápis? Já si vzpomínám, že když jsem - coby samouk - zjistil, co je roura, tak jsem si to hned takhle vyzkoušel.

       

Hodnocení: 100 %

        špatnédobré        

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

Komentáře

Nástroje: Začni sledovat (2) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

15.11.2005 10:55 anicka | blog: ze_zivota
Rozbalit Rozbalit vše Re: Kde se vzalo 'cat soubor | příkaz'?
Odpovědět | Sbalit | Link | Blokovat | Admin
Za sebe muzu rict, ze casto napisu napr. 'cat soubor' a potom zjistim, ze je moc dlouhy... takze logicky nasleduje sipka nahoru, a treba 'cat soubor | head'. A nebo proste behem psani 'cat soubor' teprve premyslim, co s nim budu delat - nakonec mi to urychli praci, kdybych napred premyslela, pak psala prikaz, a pak teprve soubor, trvalo by to dele. V neposledni rade, pokud pisu nejaky dlouhy sed/grep humus, jsem rada, ze se mi tam neplete jeste jmeno souboru. Takze tak.

Nemam rada mc, takze vscehno delam primo v shellu a takto to dopada.
^D
15.11.2005 11:14 Robert Krátký | skóre: 94 | blog: Robertův bloček
Rozbalit Rozbalit vše Re: Kde se vzalo 'cat soubor | příkaz'?
Ta šipka nahoru a něco připsat... to mě nenapadlo. Asi to také dělám.
15.11.2005 12:09 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: Kde se vzalo 'cat soubor | příkaz'?
a o
<soubor nějaký složitý příkaz co neznám
jste ještě neslyšel? Pořadí zadávání to má úplně stejné
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é.
15.11.2005 13:20 Marek 'marx' Grác | skóre: 21 | blog: Paralelný blog | Brno / Bratislava
Rozbalit Rozbalit vše Re: Kde se vzalo 'cat soubor | příkaz'?
Lenže cat sa píše jednoduchšie ako <, ktoré musíš zapisovať pomocou shiftu, zatiaľčo na cat ti stačí jedna ruka (a na každú klávesu využívaš iný prst). Ďalší dôvod pre používanie catu je, že nie všetky programy/skripty zvládajú niečo iné ako štandardný vstup. Tvoj návrh s < je síce pekný, ale cat ti dáva výhodu zameniteľnosti bez toho, aby si zasahoval do zbytku :) jednoducho umažeš po prvú rúru a zameníš to za výstup z iného progamu a fičíš.
15.11.2005 15:05 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: Kde se vzalo 'cat soubor | příkaz'?
hmm, umažu první rúru. Tak si zkus napast <soubor blabla bla a pak zmáčknout Home(nebo Ctrl+A) potom Alt+F a Ctrl+W, zaměň za výstup z iného progamu a fičíš S cat soubor | to třemi údery do klávesnice neuděláš. Když to budeš dělat přes ssh na pomalé lajně, tak si párkrát přemažeš i kus toho následujícího příkazu. Tak já nevím, ale ergonomie <soubor je o řád lepší.
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é.
15.11.2005 15:18 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: Kde se vzalo 'cat soubor | příkaz'?
Tak ještě jednodužší Home a Alt+D takže jen dva úhozy do klávesnice.
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é.
Nejsemtu avatar 16.11.2005 19:46 Nejsemtu | skóre: 14 | blog: Nejde Smazat
Rozbalit Rozbalit vše Re: Kde se vzalo 'cat soubor | příkaz'?
Velmi často se mi stávalo (na různých počích všude možně), že po stisku klávesy Home na řádek vyběhla jakási escape sekvence.
15.11.2005 10:55 Jan Kundrát (jkt) | skóre: 27 | blog: jkt | Praha - Bohnice
Rozbalit Rozbalit vše Re: Kde se vzalo 'cat soubor | příkaz'?
Odpovědět | Sbalit | Link | Blokovat | Admin
Mno treba ja se vydatne snazim pouzivat frazi "And the winner of the Useless use of `cat` award is ..." a vetsinou to zabira :-)
Blésmrt
15.11.2005 11:02 Ondřej
Rozbalit Rozbalit vše Re: Kde se vzalo 'cat soubor | příkaz'?
Odpovědět | Sbalit | Link | Blokovat | Admin
Při použití s cat si nemusíte pamatovat pořadí parametrů grepu ;)
15.11.2005 11:09 anicka | blog: ze_zivota
Rozbalit Rozbalit vše Re: Kde se vzalo 'cat soubor | příkaz'?
To bych zrovna jako zvlast velkou vyhodu nevidela, grep ma tu milou vlastnost, ze ocekava stejne poradi argumentu jako vsechny ostatni unixove prikazy .o)
^D
15.11.2005 11:13 Michal Čihař | skóre: 61 | blog: Bláboly | Praha
Rozbalit Rozbalit vše Re: Kde se vzalo 'cat soubor | příkaz'?
Odpovědět | Sbalit | Link | Blokovat | Admin
Máš tam jenom jeden zbytečný cat, to je slabota :-)
Weblate - překládání přes web | Gammu SMSD - posílání SMS | Blog
15.11.2005 11:19 anicka | blog: ze_zivota
Rozbalit Rozbalit vše Re: Kde se vzalo 'cat soubor | příkaz'?
Jeziiisi... u toho tveho prikladu jsem musela asi vterinu uvazovat o syntaxi... kombinace '... | cat - > cosi' je opravdu nevidana.

OK, OK - pro tohle uz nemam vysvetleni.
^D
15.11.2005 11:29 Robert Krátký | skóre: 94 | blog: Robertův bloček
Rozbalit Rozbalit vše Re: Kde se vzalo 'cat soubor | příkaz'?
kombinace '... | cat - > cosi' je opravdu nevidana.
Ale bezesporu je to vynalézavé. Škoda, že tam to | cat - není vícekrát hned za sebou...
15.11.2005 11:19 Peter Figura | skóre: 12 | blog: pefi | Modra
Rozbalit Rozbalit vše Re: Kde se vzalo 'cat soubor | příkaz'?
Odpovědět | Sbalit | Link | Blokovat | Admin
Pre mna je cat dobry starter pri vacsich kolonach. Az po prvom odskusani nasleduje optimalizacia a vtedy ide prec nielen cat ;-)

Inak cat zvyknem pouzivat na simulovanie stand. vstupu pri scriptoch, ktore sluzia ako filtre. Ako som napisal, po otestovani cat ide prec.
15.11.2005 11:50 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
Rozbalit Rozbalit vše Re: Kde se vzalo 'cat soubor | příkaz'?
Odpovědět | Sbalit | Link | Blokovat | Admin
Není to pozůstatek z Unixu? Je možné, že staré implementace grepu neuměly otevřít soubor a pracovaly jen se stdin, stdout.
When your hammer is C++, everything begins to look like a thumb.
15.11.2005 12:05 Robert Krátký | skóre: 94 | blog: Robertův bloček
Rozbalit Rozbalit vše Re: Kde se vzalo 'cat soubor | příkaz'?
To bych neřekl, protože grep je jen vytržený specifický příkaz z 'ed' (g/re/p -- vypiš regexp) - a ed se soubory pracovat umí.
15.11.2005 13:13 Marek 'marx' Grác | skóre: 21 | blog: Paralelný blog | Brno / Bratislava
Rozbalit Rozbalit vše Re: Kde se vzalo 'cat soubor | příkaz'?
Podľa mňa tiež pôvodný grep pracoval len ako filter a práca so súbormi bolo jedno z (nielen) GNU rozšírení.
15.11.2005 12:04 outrage | skóre: 20 | blog: Outrage's Blog
Rozbalit Rozbalit vše Re: Kde se vzalo 'cat soubor | příkaz'?
Odpovědět | Sbalit | Link | Blokovat | Admin
Toto u mne vzniklo uz v dobe, kdy jsem objevil rouru. Proste mi to tak nejak prijde prirozenejsi a (jak jiz bylo receno) take nemusim premyslet "co se souborem" pred napsanim prikazu. Takhle napisu cat soubor a mam dostatek casu si promyslet, co dal;)

Asi hodne blbej duvod. Ale citili byste se lepe, kdybyste vterinu jen tak koukali do shellu na kurzor? Pro me je asi lepsi premyslet u psani, zvlastni.
Není-li to pravda, je to velmi dobře vymyšleno.
15.11.2005 12:12 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: Kde se vzalo 'cat soubor | příkaz'?
tak místo cat soubor | pište <soubor a budeme spokojení všichni. Jako malý bonus ušetříte pět úhozů do klávesnice. Jen jestli vám těch pět úhozů nebude chybět při tom přemýšlení.
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é.
15.11.2005 12:45 zde | skóre: 9 | blog: Linuch | Brno
Rozbalit Rozbalit vše Re: Kde se vzalo 'cat soubor | příkaz'?
Hlavně se ušetří jeden exec() a jeden pipe(). Přesměrování lze psát na začátek, takže to že jméno souboru na vstupu předchází příkaz je zachováno:

<huge.log grep idiot| wc -l
Táto, ty de byl? V práci, já debil.
15.11.2005 20:47 Semo | skóre: 45 | blog: Semo
Rozbalit Rozbalit vše Re: Kde se vzalo 'cat soubor | příkaz'?
<huge.log grep -c idiot
If you hold a Unix shell up to your ear, you can you hear the C.
15.11.2005 12:57 outrage | skóre: 20 | blog: Outrage's Blog
Rozbalit Rozbalit vše Re: Kde se vzalo 'cat soubor | příkaz'?
Pravda, diky. Rozhodne vyzkousim a pokud by se cas na premysleni prilis zkratil, tak se vratim ke svemu osvedcenemu zpusobu ;o)
Není-li to pravda, je to velmi dobře vymyšleno.
15.11.2005 13:11 anicka | blog: ze_zivota
Rozbalit Rozbalit vše Re: Kde se vzalo 'cat soubor | příkaz'?
myslim, ze mluvit lidem do toho, co si tukaji do shellu je trochu prehnane .o)

Skripty, ktere maji byt spusteny vickrat nez jednou samozrejme pisu hospodarneji .o)
^D
15.11.2005 12:14 Peter S.
Rozbalit Rozbalit vše Re: Kde se vzalo 'cat soubor | příkaz'?
Odpovědět | Sbalit | Link | Blokovat | Admin
Tiež to robím...
Ale v tomto prípade je výhoda, že grep nevypisuje aj názov súboru (áno, vypisovanie názvu sa dá potlačiť ... ale to by som sa musel pozrieť do manuálu....)
15.11.2005 12:20 Peter S.
Rozbalit Rozbalit vše oprava
s tým vypisovaním mena súboru som sa sekol, teda aspoň v tom základnom tvare to problém nerobí, ale pri niektorých špeciálnych situáciach - dlhých rúrach tu ten problém je...
15.11.2005 15:11 barney
Rozbalit Rozbalit vše Re: Kde se vzalo 'cat soubor | příkaz'?
Odpovědět | Sbalit | Link | Blokovat | Admin
hmm ... co tak nieco na tento sposob ?

infilter=cat

[ "x$arg" = "xz" ] && infilter=zcat [ "x$arg" = "xj" ] && infilter=bzcat [ "x$arg" = "xf" ] && infilter="ftpget ftp.example/com"

outfilter="cat - >"

$infilter insubor \ | prikaz \ | prikaz \ | $outfilter outsubor
15.11.2005 15:15 barney
Rozbalit Rozbalit vše Re: Kde se vzalo 'cat soubor | příkaz'?
brr, tak este raz :-((
(moj druhy a posledny prispevok, nemienim sa otravovat pseudointeligentymi nastrojmi)
infilter=cat

[ "x$arg" = "xz" ] && infilter=zcat
[ "x$arg" = "xj" ] && infilter=bzcat
[ "x$arg" = "xf" ] && infilter="ftpget ftp.example/com"

outfilter="cat - >"

$infilter insubor \
  | prikaz \
  | prikaz \
  | $outfilter outsubor 
15.11.2005 15:12 podlesh | skóre: 38 | Freiburg im Breisgau
Rozbalit Rozbalit vše Re: Kde se vzalo 'cat soubor | příkaz'?
Odpovědět | Sbalit | Link | Blokovat | Admin
Už to zde několikrát bylo, ale znova: cat je velmi praktický a přehledný jako začátek větších (často mnohařádkových) kolon. Takové většinou zkouším na mnoho pokusů (doplňuji regulární výrazy, další filtry doprostřed, atd.). S tím souvisí i další výhoda: zdrojový soubor je na začátku, takže ho snadno změním při editaci řádky z historie.

<soubor sice skutečně zachovává výše zmíněné hodnoty, ale odstraňuje jednu: vizuální přehlednost. Kůl (pro ty co neznají doc. Bokra: |) je velmi výrazný oddělovač a na první pohled vidím, kde začíná skutečná práce.

Samozřejmě, ve scriptech nemá cat co dělat. A <soubor už vůbec ne.
15.11.2005 15:53 anicka | blog: ze_zivota
Rozbalit Rozbalit vše Re: Kde se vzalo 'cat soubor | příkaz'?
Kůl, to je fakt cool .o) Já jsem si ze školy přinesla výraz "ořítko" nebo případně "pajpítko"
^D
15.11.2005 21:16 petr_p
Rozbalit Rozbalit vše Re: Kde se vzalo 'cat soubor | příkaz'?
No, to je skoro tak hrozne, jako kdyz jsem slysel # rikat koleje.
David Watzke avatar 15.11.2005 15:27 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Kde se vzalo 'cat soubor | příkaz'?
Odpovědět | Sbalit | Link | Blokovat | Admin
Když to děláš tím dělším způsobem, stačí šipka nahoru a nahrazení grepovanýho výrazu jiným.
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
15.11.2005 15:39 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: Kde se vzalo 'cat soubor | příkaz'?
A v kratší verzi nikoliv? To jsou věci, co já se ještě z této diskuse nedovím co všechno nejde a nefunguje. Co třeba šipka nahoru Alt+B Ctrl+W, píšu nový výraz, enter a fičím.
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é.
David Watzke avatar 15.11.2005 16:39 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Kde se vzalo 'cat soubor | příkaz'?
Hm,
grep int rar.cpp
Nahoru, Alt+B, Ctrl+W a vidím:
grep int cpp
s kurzorem před c.
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
herne the hunter avatar 15.11.2005 22:41 herne the hunter | skóre: 10 | tor lara
Rozbalit Rozbalit vše Re: Kde se vzalo 'cat soubor | příkaz'?
jestli sis nevšim, tak Pichi tu celou dobu tvrdě ;) bojuje za konstrukci < soubor, takže to nejspíš myslel nějak takhle:

< rar.cpp grep int

nahoru, CTRL+W, píšu nový výraz, enter a fičím.

takhle to vypadá, když je člověk zvyklej nečíst příspěvky a hned flamovat ;)
i am herne the hunter and you are a leaf driven by the wind.
David Watzke avatar 15.11.2005 23:40 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Kde se vzalo 'cat soubor | příkaz'?
Neflamuju, řekl jsem jen, jak to dělám já. Nejsem zvědavej na nějaký <, budu to dělat jak chci, protože se mi to takhle nelíbí. :-) Netušil jsem, že se hned počítá s tím <.
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
16.11.2005 00:06 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
Rozbalit Rozbalit vše Re: Kde se vzalo 'cat soubor | příkaz'?
grep *.cpp *.h janevimcojeste -e int

ať žije GNU getopt :-)
15.11.2005 18:33 neO
Rozbalit Rozbalit vše Re: Kde se vzalo 'cat soubor | příkaz'?
Odpovědět | Sbalit | Link | Blokovat | Admin
imho to je pouzivane v LDP - takze kdo precte, tak to tak pouziva (pokud vim, tak rpave grep je tam jakozto filtr, a pracuji tam s ni mpomoci cat... ale jestli s epletu, tka jsem holt trosku vic sklerotickej, no ;))
Mikos avatar 15.11.2005 23:18 Mikos | skóre: 34 | blog: Jaderný blog | Praha
Rozbalit Rozbalit vše Re: Kde se vzalo 'cat soubor | příkaz'?
Odpovědět | Sbalit | Link | Blokovat | Admin
Ale fuj, konstrukce "< soubor prikaz" se mi primo hnusi ;-) Budu si v shellu tvrdosijne pouzivat svuj oblibeny cat a pajpu a zadnej chytrak mi do toho nebude kecat, tak! :-)
CETERUM CENSEO DRM ESSE DELENDAM Ostatně soudím, že DRM musí být zničeno!
15.11.2005 23:30 VícNežNic | skóre: 42 | blog: Spáleniště | Ne dost daleko
Rozbalit Rozbalit vše Re: Kde se vzalo 'cat soubor | příkaz'?
Burane! Vítej v klubu :-)
Copak toho není dost?
16.11.2005 11:59 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Kde se vzalo 'cat soubor | příkaz'?
Přesně. A autoři rádobyvtipných komentářů o zbytečných, zbytečnějších a nejzbytečnějších použitích příkazu cat si mohou trhnout nohou. Jen abych je trochu poškádlil: občas dokonce používám cat ještě drsnějším způsobem:
  ls -l | cat
Tak, a co povíte na tohle, moralisté? :-)
17.11.2005 13:35 Robert Krátký | skóre: 94 | blog: Robertův bloček
Rozbalit Rozbalit vše Re: Kde se vzalo 'cat soubor | příkaz'?
  ls -l | cat
K čemu je to dobré?
17.11.2005 21:05 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
Rozbalit Rozbalit vše Re: Kde se vzalo 'cat soubor | příkaz'?
Výstup ls nejde na terminál, takže nebarví a nezarovnává do sloupců (je to rychlejší než zjišťovat co za optiony je potreba pouzit).
17.11.2005 21:13 Robert Krátký | skóre: 94 | blog: Robertův bloček
Rozbalit Rozbalit vše Re: Kde se vzalo 'cat soubor | příkaz'?
A to je výhoda?
18.11.2005 15:59 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: Kde se vzalo 'cat soubor | příkaz'?
No jasně. Než napast unalias ls a ls -1, případně si ten alias vymazat z bashrc tak napíšeš ls | cat. Je to tak krásně intuitivní a nemusíš se nic učit. Napsat do basrc: alias l='ls --color=none -1' tak to už by přesáhlo veškeré mentální schopnosti některých jedinců.
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é.

Založit nové vláknoNahoru

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.