abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    včera 17:33 | Pozvánky

    Spolek OpenAlt zve příznivce otevřených řešení a přístupu na 211. sraz, který proběhne v pátek 19. září od 18:00 ve Studentském klubu U Kachničky na Fakultě informačních technologií Vysokého učení technického na adrese Božetěchova 2/1. Na srazu proběhne přednáška Jiřího Eischmanna o nové verzi prostředí GNOME 49. Nemáte-li možnost se zúčastnit osobně, přednáškový blok bude opět streamován živě na server VHSky.cz a následně i zpřístupněn záznam.

    Ladislav Hagara | Komentářů: 0
    včera 01:33 | IT novinky

    Microsoft se vyhnul pokutě od Evropské komise za zneužívání svého dominantního postavení na trhu v souvislosti s aplikací Teams. S komisí se dohodl na závazcích, které slíbil splnit. Unijní exekutivě se nelíbilo, že firma svazuje svůj nástroj pro chatování a videohovory Teams se sadou kancelářských programů Office. Microsoft nyní slíbil jasné oddělení aplikace od kancelářských nástrojů, jako jsou Word, Excel a Outlook. Na Microsoft si

    … více »
    Ladislav Hagara | Komentářů: 3
    12.9. 14:00 | Nová verze

    Samba (Wikipedie), svobodná implementace SMB a Active Directory, byla vydána ve verzi 4.23.0. Počínaje verzí Samba 4.23 jsou unixová rozšíření SMB3 ve výchozím nastavení povolena. Přidána byla podpora SMB3 přes QUIC. Nová utilita smb_prometheus_endpoint exportuje metriky ve formátu Prometheus.

    Ladislav Hagara | Komentářů: 0
    12.9. 12:00 | Zajímavý článek

    Správcovský tým repozitáře F-Droid pro Android sdílí doporučení, jak řešit žádosti o odstranění nelegálního obsahu. Základem je mít nastavené formální procesy, vyhrazenou e-mailovou adresu a být transparentní. Zdůrazňují také důležitost volby jurisdikce (F-Droid je v Nizozemsku).

    🇵🇸 | Komentářů: 20
    12.9. 05:33 | Bezpečnostní upozornění

    Byly publikovány informace o další zranitelnosti v procesorech. Nejnovější zranitelnost byla pojmenována VMScape (CVE-2025-40300, GitHub) a v upstream Linuxech je již opravena. Jedná se o variantu Spectre. KVM host může číst data z uživatelského prostoru hypervizoru, např. QEMU.

    Ladislav Hagara | Komentářů: 0
    11.9. 22:00 | Komunita

    V červenci loňského roku organizace Apache Software Foundation (ASF) oznámila, že se částečně přestane dopouštět kulturní apropriace a změní své logo. Dnes bylo nové logo představeno. "Indiánské pírko" bylo nahrazeno dubovým listem a text Apache Software Foundation zkratkou ASF. Slovo Apache se bude "zatím" dál používat. Oficiální název organizace zůstává Apache Software Foundation, stejně jako názvy projektů, například Apache HTTP Server.

    Ladislav Hagara | Komentářů: 14
    11.9. 17:33 | Nová verze

    Byla vydána (𝕏) srpnová aktualizace aneb nová verze 1.104 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.104 vyjde také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.

    Ladislav Hagara | Komentářů: 1
    11.9. 15:33 | IT novinky

    Spotify spustilo přehrávání v bezztrátové kvalitě. V předplatném Spotify Premium.

    Ladislav Hagara | Komentářů: 0
    11.9. 15:00 | IT novinky

    Spoluzakladatel a předseda správní rady americké softwarové společnosti Oracle Larry Ellison vystřídal spoluzakladatele automobilky Tesla a dalších firem Elona Muska na postu nejbohatšího člověka světa. Hodnota Ellisonova majetku díky dnešnímu prudkému posílení ceny akcií Oraclu odpoledne vykazovala nárůst o více než 100 miliard dolarů a dosáhla 393 miliard USD (zhruba 8,2 bilionu Kč). Hodnota Muskova majetku činila zhruba 385 miliard dolarů.

    Ladislav Hagara | Komentářů: 7
    10.9. 21:22 | Nová verze

    Bylo vydáno Eclipse IDE 2025-09 aneb Eclipse 4.37. Představení novinek tohoto integrovaného vývojového prostředí také na YouTube.

    Ladislav Hagara | Komentářů: 0
    Pro otevření více webových stránek ve webovém prohlížečí používám
     (82%)
     (6%)
     (3%)
     (3%)
     (4%)
     (2%)
    Celkem 171 hlasů
     Komentářů: 12, poslední 10.9. 13:00
    Rozcestník
    Štítky: není přiřazen žádný štítek

    Dotaz: Expanze * v příkazu rm

    28.1.2017 13:35 miro
    Expanze * v příkazu rm
    Přečteno: 536×
    Potřebuji ve skriptu použít (navíc pod rootem) něco jako 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:


    Odpovědi

    28.1.2017 14:51 NN
    Rozbalit Rozbalit vše Re: Expanze * v příkazu rm
    Asterisk '*' na nadrazeny adresar '..' nexpanduje.
    28.1.2017 15:33 Filip Jirsák | skóre: 67 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: Expanze * v příkazu rm
    Proč tam cpete to -f? Víte, co to dělá, nebo to jen odněkud opisujete?

    Kombinace -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
    Jendа avatar 28.1.2017 15:36 Jendа | skóre: 78 | blog: Jenda | JO70FB
    Rozbalit Rozbalit vše Re: Expanze * v příkazu rm
    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)
    28.1.2017 21:11 miro
    Rozbalit Rozbalit vše Re: Expanze * v příkazu rm
    Ano, potřebuji smazat natvrdo veškerý obsah adresáře a adresář zachovat. Důvod je ale jiný - ten adresář je mountpointem a bude odstraněn až po umountu.
    28.1.2017 21:20 miro
    Rozbalit Rozbalit vše Re: Expanze * v příkazu rm
    -f - no, byl jsem přesvědčen, že vím, ale nevěděl jsem. Myslel jsem si, že to smaže soubory, u kterých by to jinak řvalo, že je používá jiný proces. A nevím, jak se k takové situaci rm staví, v man rm jsem o tom nic nenašel. Takže rm -r -- /muj/adresar/* je správně?
    28.1.2017 21:37 miro
    Rozbalit Rozbalit vše Re: Expanze * v příkazu rm

    Ne, tak ještě jinak:

    rm -rf -- /muj/adresar/*
    rm -rf -- /muj/adresar/..?*
    rm -rf -- /muj/adresar/.[!.]*
    

    ???

    28.1.2017 21:43 Filip Jirsák | skóre: 67 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: Expanze * v příkazu rm
    Raději
    find /muj/adresar -mount -delete
    
    28.1.2017 21:39 Filip Jirsák | skóre: 67 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: Expanze * v příkazu rm
    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.
    28.1.2017 22:31 miro
    Rozbalit Rozbalit vše Re: Expanze * v příkazu rm
    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čí.

    Jendа avatar 29.1.2017 01:05 Jendа | skóre: 78 | blog: Jenda | JO70FB
    Rozbalit Rozbalit vše Re: Expanze * v příkazu rm
    ale podtrhne mu mountpoint, ve kterém ten soubor byl
    FS s otevřeným souborem nejde odmountovat. Zkus si třeba umount /home (pokud ho máš na zvláštním FS).
    29.1.2017 09:14 miro
    Rozbalit Rozbalit vše Re: Expanze * v příkazu rm
    Aha, jde to jen s parametrem -l. Ale ten odkaz tam zřejmě zůstane do ukončení práce s tím souborem.
    29.1.2017 14:05 Peter Golis | skóre: 65 | blog: Bežné záležitosti | Bratislava
    Rozbalit Rozbalit vše Re: Expanze * v příkazu rm
    Áno. Od toho je "Lazy unmount".
    Jendа avatar 29.1.2017 01:06 Jendа | skóre: 78 | blog: Jenda | JO70FB
    Rozbalit Rozbalit vše Re: Expanze * v příkazu rm
    Jinak za find díky. Je trochu škoda, že skončí exitstatusem 1, protože /muj/adresar/ se mu nepovede smazat
    -mindepth 1 nepomůže?
    29.1.2017 09:15 miro
    Rozbalit Rozbalit vše Re: Expanze * v příkazu rm
    Jo, to je to pravé ořechové, díky.
    28.1.2017 19:41 Jooky (inactive) | skóre: 39 | blog: Jooky | Bratislava
    Rozbalit Rozbalit vše Re: Expanze * v příkazu rm
    Ta konstrukcia "rm", co si napisal ma vzasade dva problemy:

    1) "hviezdicka" sa ti moze expadnut na nazvy, ktore budu inac interpretovane, ako ocakavas:
    $ 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
    

    2) z pohladu pocitaca je celkom dlhy cas medzi vytvorenim zoznamu a samotnym "mazanim" suborov prikazom rm. Tento cas moze nejaky zaskodnik vyuzit na to, aby podhodil rm na vymazanie nieco uplne ine ...

    Najlepsie je na "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 -delete
    
    Cez -mindepth a -maxdepth sa da pekne doladit ako hlboko ma hladat veci na zmazanie (a napr nechat directory a zmazat len obsah).
    Jendа avatar 28.1.2017 19:54 Jendа | skóre: 78 | blog: Jenda | JO70FB
    Rozbalit Rozbalit vše Re: Expanze * v příkazu rm
    Tento cas moze nejaky zaskodnik vyuzit na to, aby podhodil rm na vymazanie nieco uplne ine ...
    Tady by mě zajímal příklad.
    30.1.2017 20:00 Jooky (inactive) | skóre: 39 | blog: Jooky | Bratislava
    Rozbalit Rozbalit vše Re: Expanze * v příkazu rm
    otvorene poviem, ze neviem ktore z veci uz opravili a nejak som tuto tematiku uz dlhsie nesledoval. Vacsina race condition vychadzala z toho, ze zoznam sa vacsinou robi cez shell expanziu a rm prechadza strom, ktory maze, cez ekvivalnet "cd".

    1) ked mame napr /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 :D

    2) dalsia zloba je, ked napr v /tmp je "dir". Ked v spravnom momente ten dir zmenime za linku, tak rm dokazeme "poslat" niekde inde.

    skus si na googli pohladat rm a race condition urcite najde aj viacej chutoviek :)
    30.1.2017 21:26 Andrej | skóre: 51 | blog: Republic of Mordor
    Rozbalit Rozbalit vše Re: Expanze * v příkazu rm

    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ě!
    
    30.1.2017 21:47 Filip Jirsák | skóre: 67 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: Expanze * v příkazu rm
    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.
    30.1.2017 21:56 Andrej | skóre: 51 | blog: Republic of Mordor
    Rozbalit Rozbalit vše Re: Expanze * v příkazu rm
    …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.

    31.1.2017 07:09 Filip Jirsák | skóre: 67 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: Expanze * v příkazu rm
    Ano, napsal jsem to špatně. Zástupné znaky se neexpandují na názvy s tečkou na začátku nebo za lomítkem, pokud není tečka explicitně uvedena na začátku nebo za lomítkem ve vzoru. Chtěl jsem upozornit na to, že v zsh je to pravidlo univerzální, netýká se jen hvězdičky ale všech expanzí.
    30.1.2017 22:03 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Expanze * v příkazu rm
    echo * .[^.]*  # Úplně všechno, kromě . a ..

    Určitě? :-)

    31.1.2017 04:11 Andrej | skóre: 51 | blog: Republic of Mordor
    Rozbalit Rozbalit vše Re: Expanze * v příkazu rm

    Ano, ... tam nebude.

    31.1.2017 04:14 Andrej | skóre: 51 | blog: Republic of Mordor
    Rozbalit Rozbalit vše Re: Expanze * v příkazu rm

    Že by tedy * .[^.]* ..?*? No, někdo asi zase vymyslí protipříklad, ale co už.

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.