Po dvaceti letech skončil leader japonské SUMO (SUpport.MOzilla.org) komunity Marsf. Důvodem bylo nasazení sumobota, který nedodržuje nastavené postupy a hrubě zasahuje do překladů i archivů. Marsf zároveň zakázal použití svých příspěvků a dat k učení sumobota a AI a požádal o vyřazení svých dat ze všech učebních dat.
Úřad pro ochranu hospodářské soutěže zahajuje sektorové šetření v oblasti mobilních telekomunikačních služeb poskytovaných domácnostem v České republice. Z poznatků získaných na základě prvotní analýzy provedené ve spolupráci s Českým telekomunikačním úřadem (ČTÚ) ÚOHS zjistil, že vzájemné vztahy mezi operátory je zapotřebí detailněji prověřit kvůli možné nefunkčnosti některých aspektů konkurence na trzích, na nichž roste tržní podíl klíčových hráčů a naopak klesá význam nezávislých virtuálních operátorů.
Různé audity bezpečnostních systémů pařížského muzea Louvre odhalily závažné problémy v oblasti kybernetické bezpečnosti a tyto problémy přetrvávaly déle než deset let. Jeden z těchto auditů, který v roce 2014 provedla francouzská národní agentura pro kybernetickou bezpečnost, například ukázal, že heslo do kamerového systému muzea bylo „Louvre“. 😀
Z upstreamu GNOME Mutter byl zcela odstraněn backend X11. GNOME 50 tedy poběží už pouze nad Waylandem. Aplikace pro X11 budou využívat XWayland.
Byl publikován plán na odstranění XSLT z webových prohlížečů Chrome a Chromium. S odstraněním XSLT souhlasí také vývojáři Firefoxu a WebKit. Důvodem jsou bezpečnostní rizika a klesající využití v moderním webovém vývoji.
Desktopové prostředí LXQt (Lightweight Qt Desktop Environment, Wikipedie) vzniklé sloučením projektů Razor-qt a LXDE bylo vydáno ve verzi 2.3.0. Přehled novinek v poznámkách k vydání.
Organizace Open Container Initiative (OCI) (Wikipedie), projekt nadace Linux Foundation, vydala Runtime Specification 1.3 (pdf), tj. novou verzi specifikace kontejnerového běhového prostředí. Hlavní novinkou je podpora FreeBSD.
Nový open source router Turris Omnia NG je v prodeji. Aktuálně na Allegro, Alternetivo, Discomp, i4wifi a WiFiShop.
Na YouTube a nově také na VHSky byly zveřejněny sestříhané videozáznamy přednášek z letošního OpenAltu.
Jednou za rok otevírá společnost SUSE dveře svých kanceláří široké veřejnosti. Letos je pro vás otevře 26. listopadu v 16 hodin v pražském Karlíně. Vítáni jsou všichni, kdo se chtějí dozvědět více o práci vývojářů, prostředí ve kterém pracují a o místní firemní kultuře. Můžete se těšit na krátké prezentace, které vám přiblíží, na čem inženýři v Praze pracují, jak spolupracují se zákazníky, partnery i studenty, proč mají rádi open source a co
… více »rm -rf /muj/adresar/* ; něco se mi ale plete, že jsem kdysi dávno četl něco o tom, že ta hvězdička by mohla být interpretována mimo jiné jako .. . Takže by rm -rf /muj/adresar/* mohlo dopadnout jako rm -rf /muj/adresar/../../../* Týkalo se to jen nějaké speciální situace, nepamatuji si to přesně, nejsem schopen dohledat, kde jsem to četl a nemám teď ani k dispozici žádný virtuál, na kterém bych si to mohl vyzkoušet. Existuje to nebezpečí expanze na .. vůbec? A jde rm -rf /muj/adresar/* po stromu pouze směrem dolů?
Řešení dotazu:
-r a * je také zvláštní. Protože to dělá docela specifickou věc, a pochybuju, že zrovna to je vaším cílem.
Na co se expanduje hvězdička se dočtete v manuálu k vašemu shellu. Např. v bashi se při standardním nastavení hvězdička neexpanduje na názvy začínající tečkou (takže ani na . nebo ..) a na názvy obsahující lomítko. Takže příkaz rm -r /muj/adresar/* se expanduje na všechny viditelné (nezačínající tečkou) soubory a adresáře v /muj/adresar/ a díky parametru -r je rm rekurzivně smaže. Nebo-li vám v /muj/adresar zůstanou všechny skryté soubory a adresáře (na první úrovni). Problém ještě můžou způsobit soubory a adresáře, jejichž název začíná pomlčkou, protože je rm bude chápat jako parametr. Proto lze použít parametr -- (dvě pomlčky), po něm už bude rm vše chápat jako název souboru.
Pokud chcete smazat adresář /muj/adresar a vše, co je uvnitř, je na to jednoduchý příkaz:
rm -r /muj/adresar
Pokud chcete smazat adresář /muj/adresar a vše, co je uvnitřTipuji, že chce smazat obsah a adresář nechat. (a vytvořit ho po smazání není jednoduché, pokud potřebuje zachovat práva a extended atributy)
rm staví, v man rm jsem o tom nic nenašel. Takže rm -r -- /muj/adresar/* je správně?
Ne, tak ještě jinak:
rm -rf -- /muj/adresar/* rm -rf -- /muj/adresar/..?* rm -rf -- /muj/adresar/.[!.]*
???
find /muj/adresar -mount -delete
A nevím, jak se k takové situaci rm staví, v man rm jsem o tom nic nenašel.K tomu se nijak nestaví
rm, k tomu se staví unix. A to tak, že na jeden soubor existuje jeden či více odkazů. Vytvoříte pojmenovaný soubor v souborovém systému – vznikne první odkaz. Vytvoříte na soubor odkaz (ln) – vznikne druhý odkaz. Nějaký program otevře soubor pro čtení – vznikne třetí odkaz. rm smaže jen ten pojmenovaný odkaz v aktuálním adresáři – ale soubor se fyzicky smaže až tehdy, když přestanou existovat všechny odkazy. Tedy když smažete ostatní odkazy na souborovém systému a soubor uzavřou všechny programy, které ho mají otevřený.
Takže rm -r -- /muj/adresar/* je správně?Je to lepší, ale nesmaže vám to skryté (začínající tečkou) soubory a adresáře přímo v
/muj/adresar. Pokud víte, že tam nejsou a nikdy nebudou, můžete to použít takhle. A také pokud víte, že tam souborů a podadresářů nebude moc – přeci jen existuje nějaký limit na počet argumentů příkazu. Pokud to chcete mít obecné, použijte find, ten si poradí i se skrytými soubory i s jejich velkým množstvím, a jako bonus bude fungovat i při jiném nastavení expandování žolíků v shellu.
ale soubor se fyzicky smaže až tehdy, když přestanou existovat všechny odkazy
A co když nějaký soubor má otevřený ten soubor a jiný proces nejenže ten soubor smaže z toho adresáře, ale podtrhne mu mountpoint, ve kterém ten soubor byl? Připadne mi, že ten proces musí pracovat spíš s nějakou kopií dat než jen s odkazem na ten soubor, jinak by o ta data musel odmountováním nutně přijít, ne?
Jinak za find díky. Je trochu škoda, že skončí exitstatusem 1, protože /muj/adresar/ se mu nepovede smazat, což může být trošku otrava, pokud by chtěl člověk testovat, jestli se mazání podařilo, ale pro moje účely to takhle bohatě postačí.
ale podtrhne mu mountpoint, ve kterém ten soubor bylFS s otevřeným souborem nejde odmountovat. Zkus si třeba umount /home (pokud ho máš na zvláštním FS).
-l. Ale ten odkaz tam zřejmě zůstane do ukončení práce s tím souborem.
$ rm * rm (GNU coreutils) 8.25 Copyright (C) 2016 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later http://gnu.org/licenses/gpl.html. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Written by Paul Rubin, David MacKenzie, Richard M. Stallman, and Jim Meyering.
$ ls -l total 0 -rw-rw-r-- 1 lukas lukas 0 Jan 28 19:30 --version
rm na vymazanie nieco uplne ine ...rm" v scriptoch zabudnut a pouzit radsej konstrukciu find ... -delete. Samotny find robi viacero kontrol, pred samotnym mazanim (aby zabranil problemu s race condition) a ako bonus si mozes nechat pekne vypisovat subory, ktore mazes. Napr. ja pouzivam toto na pretriedenie fotiek z bezpecnostnej kamery.
find /data/www/motion/cam1 -xdev -type f -mtime +22 -ls -deleteCez
-mindepth a -maxdepth sa da pekne doladit ako hlboko ma hladat veci na zmazanie (a napr nechat directory a zmazat len obsah).
Tento cas moze nejaky zaskodnik vyuzit na to, aby podhodil rm na vymazanie nieco uplne ine ...Tady by mě zajímal příklad.
cd"./tmp/a/b/c, tak rm sa najprv cez chdir dopracuje az do "c" a nasledne potom cez chdir("..") posuva "hore". Ked pocas vymazavania veci v "c" tento dir presunieme rovno do /tmp, tak sa rm cez chdir("..") dopracuje az do "/" a ... zacne secko mazat tam :Drm dokazeme "poslat" niekde inde.rm a race condition urcite najde aj viacej chutoviek :)
Zaprvé, nic se neexpanduje v příkazu rm. Jediné, co v tomhle případě expanduje hvězdičky, je shell. (Snad jediný z běžných příkazů, který opravdu dostává hvězdičky (které se pak musí v shellu escapovat) a sám je expanduje, je find. Ostatní příkazy zpravidla nic neexpandují a používají přesně ty parametry, které jim předá shell.)
Zadruhé, proč to prostě nezkusíš pomocí echo, jen tak se podívat, co přesně shell tomu příkazu rm předává?
echo rm -rf /můj/adresář/*K expanzi bych doplnil, že (samotná) hvězdička v shellu implicitně ignoruje soubory a adresáře, jejichž název začíná tečkou. Tedy například
., .. a cokoliv jiného s tečkou na začátku, třeba .profile.
Zkus porovnat tři následující příklady:
cd ~ echo * # Všechno, co nezačíná tečkou echo * .[^.]* # Úplně všechno, kromě . a .. echo * .* # A s tímhle fakt opatrně!
Zadruhé, proč to prostě nezkusíš pomocí echo, jen tak se podívat, co přesně shell tomu příkazu rm předává?V
zsh lze expandovat rovnou pomocí tabulátoru. Takže si například můžete nechat hvězdičku expandovat a pak seznam ještě ručně upravit.
A s tím expandováním je to také různé podle shellu. zsh při expanzi implicitně negeneruje názvy s tečkou na začátku ve všech případech (tj. nejen u hvězdičky, ale i u jiných expanzí), a . a .. negeneruje při expanzi nikdy.
…zsh při expanzi implicitně negeneruje názvy s tečkou na začátku ve všech případech (tj. nejen u hvězdičky, ale i u jiných expanzí)…
Tohle tvrzení je mírně zavádějící, protože .* nebo .[^.]* v zsh generují také soubory a adresáře s tečkou na začátku.
A ano, .* a .[^.]* dávají v zsh totéž, což je odlišnost od bashe. (Toho jsem si až doteď nevšiml — zajímavé poučení.)
Celkem bezpečná varianta je tedy .[^.]* — na té se totiž shodne bash i zsh.
zsh je to pravidlo univerzální, netýká se jen hvězdičky ale všech expanzí.
echo * .[^.]* # Úplně všechno, kromě . a ..
Určitě? :-)
Ano, ... tam nebude.
Že by tedy * .[^.]* ..?*? No, někdo asi zase vymyslí protipříklad, ale co už.
Tiskni
Sdílej: