Byl zveřejněn program konference Installfest 2026. Konference proběhne o víkendu 28. a 29. března v Praze na Karlově náměstí 13. Vstup zdarma.
Byla vydána Java 26 / JDK 26. Nových vlastností (JEP - JDK Enhancement Proposal) je 10. Odstraněno bylo Applet API.
Byla vydána nová verze 260 správce systému a služeb systemd (Wikipedie, GitHub). Odstraněna byla podpora skriptů System V. Aktualizovány byly závislosti. Minimální verze Linuxu z 5.4 na 5.10, OpenSSL z 1.1.0 na 3.0.0, Pythonu z 3.7.0 na 3.9.0…
Byla vydána nová verze 5.1 svobodného 3D softwaru Blender. Přehled novinek i s náhledy a videi v poznámkách k vydání. Videopředstavení na YouTube.
Bylo oznámeno vydání nové verze 8.1 "Hoare" kolekce svobodného softwaru umožňujícího nahrávání, konverzi a streamovaní digitálního zvuku a obrazu FFmpeg (Wikipedie). Doprovodný příspěvek na blogu Khronosu rozebírá kódování a dekódování videa pomocí Vulkan Compute Shaders v FFmpeg.
Byl představen open-source a open-hardware prototyp nízkonákladového raketometu kategorie MANPADS, který byl sestaven z běžně dostupné elektroniky a komponent vytištěných na 3D tiskárně. Raketa využívá skládací stabilizační křidélka a canardovou stabilizaci aktivně řízenou palubním letovým počítačem ESP32, vybaveným inerciální měřicí jednotkou MPU6050 (gyroskop a akcelerometr). Přenosné odpalovací zařízení obsahuje GPS,
… více »Vědci z univerzity La Sapienza v Římě vyvinuli systém, který dokáže identifikovat jednotlivce pouze na základě toho, jak narušují signály Wi-Fi. Autoři tuto novou technologii nazvali WhoFi. Na rozdíl od tradičních biometrických systémů, jako jsou skenery otisků prstů a rozpoznávání obličeje, nevyžaduje tato metoda přímý fyzický kontakt ani vizuální vstupy. WhoFi může také sledovat jednotlivce na větší ploše než kamera s pevnou polohou; stačí, je-li k dispozici Wi-Fi síť.
SuperTux (Wikipedie), tj. klasická 2D plošinovka inspirovaná sérií Super Mario, byl vydán v nové verzi 0.7.0. Videoukázka na YouTube. Hrát lze i ve webovém prohlížeči.
Ageless Linux je linuxová distribuce vytvořená jako politický protest proti kalifornskému zákonu o věkovém ověřování uživatelů na úrovni OS (AB 1043). Kromě běžného instalačního obrazu je k dispozici i konverzní skript, který kompatibilní systém označí za Ageless Linux a levné jednodeskové počítače v ceně 12$ s předinstalovaným Ageless Linuxem, které se chystají autoři projektu dávat dětem. Ageless Linux je registrován jako operační
… více »PimpMyGRC upravuje vzhled toolkitu GNU Radio a přidává alternativní barevná témata. Primárním cílem autora bylo pouze vytvořit tmavé prostředí vhodné pro noční práci, nicméně k dispozici je nakonec celá škála barevných schémat včetně možností různých animací a vizuálních efektů (plameny, matrix, bubliny...), které nepochybně posunou uživatelský zážitek na zcela jinou úroveň. Témata jsou skripty v jazyce Python, které nahrazují
… více »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í.)