Byla vydána nová verze 10.2 z Debianu vycházející linuxové distribuce DietPi pro (nejenom) jednodeskové počítače. Přehled novinek v poznámkách k vydání. Vypíchnout lze nové balíčky Immich, Immich Machine Learning, uv a RustDesk Client.
TypeScript (Wikipedie), tj. JavaScript rozšířený o statické typování a další atributy, byl vydán v nové verzi 6.0. Příští verze 7.0 je kvůli výkonu přepisována do programovacího jazyka Go.
Christian Schaller z Red Hatu na svém blogu popsal své zkušenosti s používáním AI při vývoji open source aplikací pro Linux. Pomocí různých AI aktualizoval nebo vytvořil aplikace Elgato Light GNOME Shell extension, Dell Ultrasharp Webcam 4K, Red Hat Planet, WMDock, XMMS resuscitated (aktualizace z GTK 2 a Esound na GTK 4, GStreamer a PipeWire) a Monkey Bubble. SANE ovladač pro skener Plustek OpticFilm 8200i se mu zatím nepovedl.
Americké firmy Tesla a SpaceX postaví v texaském Austinu moderní komplex na výrobu čipů pro umělou inteligenci (AI). Součástí projektu s názvem Terafab budou dvě moderní továrny na výrobu čipů – jedna se zaměří na automobily a humanoidní roboty, druhá na datová centra ve vesmíru. Uvedl to generální ředitel těchto firem Elon Musk. Projekt by podle odhadů měl stát 20 miliard USD (zhruba 425 miliard Kč).
Byla vydána nová stabilní verze 6.11 (YouTube) multiplatformního frameworku a GUI toolkitu Qt. Podrobný přehled novinek v poznámkách k vydání.
Ubuntu 26.04 patrně bude ve výchozím nastavení zobrazovat hvězdičky při zadávání hesla příkazu sudo, změna vychází z nové verze sudo-rs. Ta sice zlepší použitelnost systému pro nové uživatele, na které mohlo 'tiché sudo' působit dojmem, že systém 'zamrzl' a nijak nereaguje na stisky kláves, na druhou stranu se jedná o možnou bezpečnostní slabinu, neboť zobrazování hvězdiček v terminálu odhaluje délku hesla. Původní chování příkazu sudo
… více »Projekt systemd schválil kontroverzní pull request, který do JSON záznamů uživatelů přidává nové pole 'birthDate', datum narození, tedy údaj vyžadovaný zákony o ověřování věku v Kalifornii, Coloradu a Brazílii. Jiný pull request, který tuto změnu napravoval, byl správcem projektu Lennartem Poetteringem zamítnut s následujícím zdůvodněním:
… více »Nové číslo časopisu Raspberry Pi zdarma ke čtení: Raspberry Pi Official Magazine 163 (pdf).
Eric Lengyel dobrovolně uvolnil jako volné dílo svůj patentovaný algoritmus Slug. Algoritmus vykresluje text a vektorovou grafiku na GPU přímo z dat Bézierových křivek, aniž by využíval texturové mapy obsahující jakékoli předem vypočítané nebo uložené obrázky a počítá přesné pokrytí pro ostré a škálovatelné zobrazení písma, referenční ukázka implementace v HLSL shaderech je na GitHubu. Slug je volným dílem od 17. března letošního
… více »Sashiko (GitHub) je open source automatizovaný systém pro revizi kódu linuxového jádra. Monitoruje veřejné mailing listy a hodnotí navrhované změny pomocí umělé inteligence. Výpočetní zdroje a LLM tokeny poskytuje Google.
Prajem všetkým krásny deň! Minule som riešil jeden skript v bashi a narazil som na veľmi zvláštne správanie. Vyriešil som to síce (v zmysle, že skript funguje), ale nechápem... A pevne verím, že tunajšia komunita mi ozrejmí, čo sa to vlastne deje.
V skripte som chcel zmazať obsah adresára s jednou výnimkou - teda zmazať všetko, okrem jedného podadresára. Cez rm by to mohlo byť takto:
rm -rf adresar/!(podadresar)
Keďže sa však jedná o "extended pattern matching operator" (nechce sa mi to prekladať
), pri niektorých distrách budeme musieť toto najprv povoliť, čiže:
shopt -s extglob rm -rf adresar/!(podadresar)
Potiaľ OK. Keď si však toto celé vrazím do podmienky, napríklad:
if shopt -s extglob rm -rf adresar/!(podadresar) then echo OK fi
Alebo aj takto:
shopt -s extglob && rm -rf adresar/!(podadresar)
Tak nám to skončí na chybe syntaxe. A to dokonca aj na distrách, kde je extglob zapnutý by default. Skript zbehne až vtedy, keď shopt vyhodím mimo podmienky, čiže:
shopt -s extglob if rm -rf adresar/!(podadresar) then echo OK fi
Jasne. Takéto niečo sa dá riešiť lepšie cez find, aspoň to bude fungovať aj v iných interpretroch, ale to je jedno - otázka znie - prečo sa to takto správa?
Tiskni
Sdílej:
Vypadá to, že při vypnutém extglob se shell nejdřív konstrukci s vykřičníkem interpretovat jako "event" (viz history expansion), takže je syntakticky špatně a žádný příkaz (tj. ani shopt) se neprovede.
Že se tak chová i ta první varianta, může možná vypadat trochu překvapivě, ale všimněte si, že když to budete takhle po řádcích zadávat interaktivně, shell stejně nezačne žádný příkaz provádět, dokud nemá podmíněný příkaz kompletní.
Zajímavější je tohle:
~> shopt -s extglob ~> if shopt -u extglob && echo dir/!(dir2); then echo OK; fi dir/!(dir2) OK
Tady se díky zapnutému extglob obejde history expansion, ale než se skutečně provede druhý podpříkaz, shopt mezitím extglob vypne, takže se konstrukce neexpanduje.
Aha. Čize interpreter skôr než začne vykonávať príkazy za if skontroluje syntax a vyhodí chybu skôr, ako čokoľvek vykoná. Tomu nasvedčuje aj Váš názorný príklad. Vďaka.
Prečo ale vyhadzuje chybu syntaxe a nie klasické event not found? Tiež som si teraz všimol, že interaktívne mám extglob zapnutý by default (Archlinux - nepamätám, že by som to zapínal, čiže predpokladám, že default), ale v skripte je to vypnuté?
Prečo ale vyhadzuje chybu syntaxe a nie klasické event not found?
Aha, neuvědomil jsem si, že to pouštíte jako script. Neinteraktivní shell nezná history expansion, takže tím se z toho stane prostá syntaktická chyba.
Tiež som si teraz všimol, že interaktívne mám extglob zapnutý by default (Archlinux - nepamätám, že by som to zapínal, čiže predpokladám, že default), ale v skripte je to vypnuté?
Pravděpodobně to "defaultně zapnuté" znamená, že se to zapíná někde v ~/.bashrc nebo /etc/bash.bashrc, který neinteraktivní shell nenačítá. (A shell options se nedědí.)