Memtest86+ (Wikipedie), svobodný nástroj pro kontrolu operační paměti, byl vydán ve verzi 9.00. S podporou architektury AArch64 (ARM64).
Společnost Fairphone stojící za stejnojmennými mobilními telefony představila (pdf) bezdrátová špuntová sluchátka Fairbuds 2. Opravitelná, s vyměnitelnými bateriemi a tříletou zárukou. Cena 119 eur.
O víkendu 17. a 18. října lze na brněnském výstavišti navštívit s jednou vstupenkou dvě akce: Maker Faire Brno, festival inovací, kreativity a kutilství, a GameDev Connect, akci určenou pro všechny současné a hlavně budoucí herní vývojáře.
Canonical vydal (email) Ubuntu 26.10 Stonking Stingray. Přehled novinek v poznámkách k vydání. Jedná se o průběžné vydání s podporou 9 měsíců, tj. do července 2027.
České Radiokomunikace (CRA) ve čtvrtek odstřelily rozhlasový vysílač Liblice B, dosud nejvyšší stavbu v Česku. O demolici dvou 355 metrů vysokých stožárů rozhodly z důvodu jejich nevyužívání, už v úterý přitom zhasly a demontovaly jejich osvětlení.
Microsoft Defender nově podporuje linuxové desktopy.
Oficiální Epic Games Launcher je v nové preview verzi poprvé dostupný i pro Linux (FAQ). Pracuje se na novém Easy Anti-Cheatu pro Linux (EAC Linux v2) a podpoře hry Fortnite na Linuxu.
Desktopové prostředí KDE Plasma bylo vydáno ve verzi 6.8. Novinky zahrnují lepší podporu vzdálené plochy, sdílení a nahrávání obrazovky a řadu drobností napříč uživatelským rozhraním (úplný seznam změn, shrnutí ve wiki).
Apple představil 7palcový displej Apple HomeView s podporou Apple Intelligence a Siri AI pro ovládání chytré domácnosti, novou řadu vybavení chytré domácnosti Apple Home Collection, další generaci HomePodu mini a novou Apple TV 4K. Apple HomeView není v Evropské unii v prodeji, jelikož umělá inteligence Siri v rámci systému iOS v EU momentálně není k dispozici. Apple spolupracuje s EU a snaží se najít cestu, jak situaci vyřešit.
KDE slaví 30 let. Přesně před 30 lety, 14. října 1996, poslal Matthias Ettrich do diskusní skupiny comp.os.linux.misc zprávu, která započala historii projektu KDE. Důležité milníky jsou zobrazeny na časové ose.
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: