Spolek OpenAlt zve příznivce otevřených řešení a přístupu na 216. sraz, který proběhne v pátek 20. února od 18:00 v Red Hat Labu (místnost Q304) na Fakultě informačních technologií VUT v Brně na ulici Božetěchova 1/2. Tématem srazu bude komunitní komunikační síť MeshCore. Jindřich Skácel představí, co je to MeshCore, předvede nejrůznější klientské zařízení a ukáže, jak v praxi vypadá nasazení vlastního repeateru.
Byla vydána nová major verze 9.0 multiplatformní digitální pracovní stanice pro práci s audiem (DAW) Ardour. Přehled novinek, vylepšení a oprav v poznámkách k vydání.
Hodnota Bitcoinu, decentralizované kryptoměny klesla pod 70 000 dolarů (1,44 milionu korun).
Valve z důvodu nedostatku pamětí a úložišť přehodnocuje plán na vydání zařízení Steam Controller, Steam Machine a Steam Frame: „Cílem tedy stále zůstává vydat všechna tři nová zařízení v první polovině letošního roku, ale přesná data a ceny jsou dvě věci, na kterých usilovně pracujeme a jsme si dobře vědomi toho, jak rychle se v tomto ohledu může vše změnit. Takže ač dnes žádné zveřejnitelné údaje nemáme, hned jak plány finalizujeme, budeme Vás informovat.“
Do 20. února lze hlasovat pro wallpapery pro Ubuntu 26.04 s kódovým názvem Resolute Raccoon.
Byla vydána lednová aktualizace aneb nová verze 1.109 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a videi v poznámkách k vydání. Ve verzi 1.109 vyjde také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.
Na Kickstarteru běží kampaň na podporu modulárního otevřeného handheldu Mecha Comet s Linuxem.
V nedávno zveřejněné kolekci dokumentů souvisejících s kontroverzním finančníkem a kuplířem Jeffrey Epsteinem se překvapivě objevil i referenční manuál unixového shellu Bash, jedná se o verzi manuálu z roku 2005. Aktuální vydání si lze stáhnout ze stránek GNU.
The Document Foundation oznámila vydání nové verze 26.2 svobodného kancelářského balíku LibreOffice. Podrobný přehled nových vlastností i s náhledy v poznámkách k vydání (cs). Vypíchnout lze podporu formátu Markdown.
Co se děje ve zprávách, ví asi každý - válka sem, clo tam, demonstrace na jednu i druhou stranu a bastlíř už má pocit, že se snad ani nic jiného neděje. To by však byl velký omyl a Virtuální Bastlírna je zde jako každý měsíc, aby vytáhla na světlo světa události ze světa vědy a techniky. Připojte se tedy nezávaznému povídání Strahovského MacGyvera! Co se tam bude probírat? PCBWay začalo dělat průhledné plošňáky, MARS končí s výrobou skříněk, FEL
… více »
list="$(ls)"
for file in "$list"
do
rm -r "$file"
done
Já bych, ale potřeboval načíst pouze soubory a né složky. Takže bych rád místo načtení souboru použil find - nicméně takhle to nefunguje:
list="$(find -maxdepth 1 -type f)"
for file in "$list"
do
rm -r "$file"
done
Řešení dotazu:
find -maxdepth 1 -type f -exec rm -f -- {} +
nebo
find -maxdepth 1 -type f -print0 | xargs -0 rm -fPokud chceš něco složitějšího, tak sáhni po vhodnějším nástroji, než je Bash. Ušetříš si spoustu času a trápení. Tvůj "$list" totiž není pole ale jeden string. Když nenapíšeš uvozovky, tak for bude procházet jednotlivé části toho stringu oddělené $IFS (defaultně mezery), což znamená, že názvy souborů s mezerou se rozpadnou.
Zmiňuješ pole, ale ve svém skriptu žádné pole nepoužíváš. Proto mi není jasné, co přesně nefunguje. Doporučuji přečíst si kapitolu o polích v manuálové stránce Bashe.
Následuje varianta tvého skriptu s opravdovým polem, která je ovšem (stejně jako původní skript) velmi špatný nápad, protože nepodporuje soubory s mezerami v názvech. Chybně je rozdělí na několik prvků pole.
list=($(find -maxdepth 1 -type f))
for file in "${list[@]}"; do
rm "$file"
done
Mimochodem, je škoda nevyužít faktu, že rm přijímá víc argumentů:
rm "${list[@]}"
Tohle^^^ je ale taky svým způsobem špatně, protože to nebude fungovat, pokud celková délka názvů souborů překročí limit pro velikost pole argv na dané platformě. Proto je lepší použít find ... -exec ... {} +, jak už tu bylo řečeno — tam tento problém nenastane.
Snad ještě doplním, že budeme-li striktně trvat na poli, samozřejmě existuje i možnost správně podporovat mezery:
readarray -t list < <(find -maxdepth 1 -type f)
for file in "${list[@]}"; do
rm "$file"
done
Tohle^^^ ale selže pro soubory, které mají v názvu konec řádku. Takové soubory bohužel můžou klidně existovat, čistě teoreticky. Například:
touch ' '
Proto je v podstatě jedinou korektní variantou něco na způsob find ... -print0 .... Nebo to celé napsat v jazyce, který důsledně rozlišuje mezi kódem a obsahem proměnných; Bash bohužel míchá obojí dohromady.
arr=( * )
for f in "${arr[@]}"; do
[[ -f $f ]] && rm -- "$f"
done
A kvoli poradiu expanzie (vid man bash) to riesi aj medzery v nazvoch suborov a ine veci. Newliny v nazvoch suborov sice nie, ale kto ich pouziva, tak si za to sam moze.
Tiskni
Sdílej: