Byla vydána beta verze openSUSE Leap 16. Ve výchozím nastavení s novým instalátorem Agama.
Devadesátková hra Brány Skeldalu prošla portací a je dostupná na platformě Steam. Vyšel i parádní blog autora o portaci na moderní systémy a platformy včetně Linuxu.
Lidi dělají divné věci. Například spouští Linux v Excelu. Využít je emulátor RISC-V mini-rv32ima sestavený jako knihovna DLL, která je volaná z makra VBA (Visual Basic for Applications).
Revolut nabídne neomezený mobilní tarif za 12,50 eur (312 Kč). Aktuálně startuje ve Velké Británii a Německu.
Společnost Amazon miliardáře Jeffa Bezose vypustila na oběžnou dráhu první várku družic svého projektu Kuiper, který má z vesmíru poskytovat vysokorychlostní internetové připojení po celém světě a snažit se konkurovat nyní dominantnímu Starlinku nejbohatšího muže planety Elona Muska.
Poslední aktualizací začal model GPT-4o uživatelům příliš podlézat. OpenAI jej tak vrátila k předchozí verzi.
Google Chrome 136 byl prohlášen za stabilní. Nejnovější stabilní verze 136.0.7103.59 přináší řadu novinek z hlediska uživatelů i vývojářů. Podrobný přehled v poznámkách k vydání. Opraveno bylo 8 bezpečnostních chyb. Vylepšeny byly také nástroje pro vývojáře.
Homebrew (Wikipedie), správce balíčků pro macOS a od verze 2.0.0 také pro Linux, byl vydán ve verzi 4.5.0. Na stránce Homebrew Formulae lze procházet seznamem balíčků. K dispozici jsou také různé statistiky.
Byl vydán Mozilla Firefox 138.0. Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 138 je již k dispozici také na Flathubu a Snapcraftu.
Šestnáctý ročník ne-konference jOpenSpace se koná 3. – 5. října 2025 v Hotelu Antoň v Telči. Pro účast je potřeba vyplnit registrační formulář. Ne-konference neznamená, že se organizátorům nechce připravovat program, ale naopak dává prostor všem pozvaným, aby si program sami složili z toho nejzajímavějšího, čím se v poslední době zabývají nebo co je oslovilo. Obsah, který vytvářejí všichni účastníci, se skládá z desetiminutových
… více »ak sa tempo prilis nezrychli, tak sa aj nieco zaujimave naucim. je to predychatelnejsie ako man stranky. dik.
pokud Dejv vydrží, bude z toho povedenej seriálSestavujeme 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.
cat soubor.txt | grep "slovo"Tak tohle používám pořád a teď se dozvím, že je to "špatně"
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
Toto je odpověď à la absurdní drama. 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.
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í
kolony?
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
Vím, o co jde ale „kolona“ zní naprosto příšerně
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 ;)
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.
<file filter1 -args1 | filter2 -args2 <file filter0 -args0 | filter1 -args1 | filter2 -args2Zdá 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).
kamo, asi starnes.
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
+1, pametat si argumenty pre vstupny subor roznych programov je nad moje sily
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 cat
u, 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.
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?
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...
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
Stará známá pravda říká, že línej se nejvíc nadře.
kravina, lenost je motor lidstva
nedavno jsem na mandrive objevil zkratku tailf, usetrim dva uhozy
ls-l
nebo cd..
which tailf
a vrátilo mi to /usr/bin/tailf
, což je normální binárka, alias by to asi takhle nenašlo.
Z man tailf:
It is similar to tail -f but does not access the file when it is not growing.
K tail -f existuje este tailf, ktory na rozdiel od prveho nemeni casy pristupu k sledovanemu suboru.
a existuje aj GNU extension tail -F, ktorá je pre sledovanie /var/log/* súborov podstatne výhodnejšia ako tail -f ....
tail
bych vypíchnul spíše -F. Ten zvládá i přesouvání souborů, což je u logů poměrně typické.
Nu, pekny navod. Ale nebyla zde nekde nejaka obdobna ucebnice?
Dobra. Omlouvam se. Ucebnice je vyrazne strucnejsi.
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.
cp
. :-)
dd
s vhodně nastaveným bs=x
by měl být efektivnější, ne?
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
>>> 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*) ?
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
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.
pv
- pokud něco může trvat delší dobu, je dobré vidět progressbar.
dd
čku USR1, tak ti taky ukáže, kolik už toho zkopírovalo.
pěkne, to jsem neznal
anebo si nainstlalovat dd_rescue, pouzivat jej misto dd, na velke objemy dat se hodi lepe.
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 ;)
< soubor.txt grep "slovo"
priznam sa ze premerovanie na zaciatku som nepoznal a ani sa mi nezda velmi logicke.
kde vsade to funguje? je to iba bash-ovina?
echo ahoj > 1.txt > 2.txt > 3.txt(a totéž umí i obráceně s <)
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 ?
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.
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!!!
este som skusil
< soubor.txt v bashi aj v zsh: Bash nevypise nic, zsh vypise obsah suboru - ako cat ;)
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)... ;)
Díky, velmi zajímavý článek
-v
znamena vetsinou "verbose", ale koukam, ze u cat
to ma uplne jiny vyznam a na takove odchylky narazim casteji... :(
Tiskni
Sdílej: