Portál AbcLinuxu, 1. května 2025 16:04

Zdánlivě záludný příkaz: rm -r .* (aktualizováno)

1.12.2010 20:40 | Přečteno: 3475× | Bash | poslední úprava: 1.12.2010 21:21

Možná byste chtěli v pracovním adresáři vymazat všechny skryté soubory a adresáře. A tak bez rozmyslu možná napíšete: rm -r .*

Naštěstí neplatí, že si takto vymažete i nadřazené adresáře ('..'). Tímto se omlouvám, jestli jsem někoho zmátl.

Přesto zde ukážu, jak použít proměnnou GLOBIGNORE, kterou považuju za velmi užitečnou.

Proměnná GLOBIGNORE (Bash)

GLOBIGNORE slouží k vyloučení určitých souborů nebo adresářů z "Pathname Expansion". Obsahuje dvojtečkou oddělené "patterns", tedy co má být vyloučeno z "Pathname Expansion".

#!/bin/bash
export GLOBIGNORE=":"
# Stačí, aby proměnná GLOBIGNORE byla nastavena a různá od null,
# potom adresáře '.' a '..' budou automaticky ignorovány.


export GLOBIGNORE=".:.."
# De facto to samé.
...

Aktualizováno: Nechal jsem se unést jednou stránkou, ve které tvrdili, že rm -r .* způsobí v Ubuntu 9.04 výmaz i nadřazených adresárů. Já jsem to bohužel zobecnil. Ještě jednou se omlouvám.

       

Hodnocení: 67 %

        špatnédobré        

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

Komentáře

Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

David Watzke avatar 1.12.2010 20:41 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Záludný příkaz: rm -r .*
Odpovědět | Sbalit | Link | Blokovat | Admin
Tohle je IMO blbost, která nefunguje nikde, jen si to lidi myslej.
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
David Watzke avatar 1.12.2010 20:44 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Záludný příkaz: rm -r .*
Aktuální Arch Linux:
root@archie /tmp/wtf # rm -fr .*
rm: adresář nelze smazat: „.“
rm: adresář nelze smazat: „..“
SunOS 5.10
watzkdav@dray5:/home/stud/watzkdav>mkdir test
watzkdav@dray5:/home/stud/watzkdav>cd test
watzkdav@dray5:/home/stud/watzkdav/test>rm -fr .*
watzkdav@dray5:/home/stud/watzkdav/test>rm -r .*
rm of . is not allowed
rm of .. is not allowed
watzkdav@dray5:/home/stud/watzkdav/test>ls -ld ../test
drwx------   2 watzkdav student      512 Dec  1 20:42 ../test/
FreeBSD 7.3
[dave@shell ~/test]$ rm -fr .*
rm: "." and ".." may not be removed
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
1.12.2010 20:47 Begleiter | skóre: 47 | blog: muj_blog | Doma
Rozbalit Rozbalit vše Re: Záludný příkaz: rm -r .*

A Ubuntu?

David Watzke avatar 1.12.2010 20:48 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Záludný příkaz: rm -r .*
Ubuntu nemám, proč to na něm nezkusíš ty? Klidně si třeba vytvoř uživatele naprosto bez práv a hned to odstřel pokud to začne mazat, ale vsadím se, že se to nebude chovat tak, jak popisuješ.
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
David Watzke avatar 1.12.2010 20:51 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Záludný příkaz: rm -r .*
V Ubuntu používají úplně stejný coreutils jako v jiných distrech. A kdyby v něm něco měnili, tak určitě ne tohle, <joke>míň by mě tam překvapilo odstranění přepínače -r z "bezpečnostních důvodů"</joke> ;-)
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
1.12.2010 21:13 s
Rozbalit Rozbalit vše Re: Záludný příkaz: rm -r .*
Odpovědět | Sbalit | Link | Blokovat | Admin
žaluďný? :-D
1.12.2010 21:26 Begleiter | skóre: 47 | blog: muj_blog | Doma
Rozbalit Rozbalit vše Re: Zdánlivě záludný příkaz: rm -r .* (aktualizováno)
Odpovědět | Sbalit | Link | Blokovat | Admin

Dávám sem odkaz, ze kterého jsem "čerpal"

Jan Drábek avatar 1.12.2010 21:49 Jan Drábek | skóre: 41 | blog: Tartar | Brno
Rozbalit Rozbalit vše Re: Zdánlivě záludný příkaz: rm -r .* (aktualizováno)
Odpovědět | Sbalit | Link | Blokovat | Admin
Sice všichni říkáte, že tohle nefunguje. Nicméně já vím, že tohle mi kdysi (bohužel fungovalo) a fakt co probublalo do vyšších adresářů, takže mi to smazalo půlku rootu než jsem to zastavil.
01010010 01000101 01010000 01101100 01001001 00110010 01000100 01100101 01010110
David Watzke avatar 1.12.2010 21:53 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Zdánlivě záludný příkaz: rm -r .* (aktualizováno)
Pamatuješ si kdy a na jakym systému?
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
2.12.2010 08:58 Chulda | skóre: 20
Rozbalit Rozbalit vše Re: Zdánlivě záludný příkaz: rm -r .* (aktualizováno)
HP-UX 10, kde chown neco .* v home adresari zmenilo vlastnika celeho FS
2.12.2010 01:58 Václav HFechs Švirga | skóre: 26 | blog: HF | Kopřivnice
Rozbalit Rozbalit vše Re: Zdánlivě záludný příkaz: rm -r .* (aktualizováno)
No já takhle skryté soubory mažu a spolehám na to, že to nemůže nic zlého udělat. Neznáš nějaký hezčí způsob (nastavování te proměnné nemyslím).
Baník pyčo!
2.12.2010 09:39 David Watzke
Rozbalit Rozbalit vše Re: Zdánlivě záludný příkaz: rm -r .* (aktualizováno)
rm .[^.]*
2.12.2010 11:10 Firzen
Rozbalit Rozbalit vše Re: Zdánlivě záludný příkaz: rm -r .* (aktualizováno)
Odpovědět | Sbalit | Link | Blokovat | Admin
No, já taky musím všechno vyzkoušet, že.. Zase jsem jednou četl dokumentaci..

man rm: -i vyžaduje potvrzení před smazáním jednotlivých souborů

ok, takže rm -i -fr .* paráda, smázlo to půlku nastavení zcela bez dotazu!

"Napsal Paul Rubin, David MacKenzie, Richard M. Stallman a Jim Meyering." No, jste chytří hoši, jen co je pravda :-/

Když napíšete rm -fr -i *. tak se to už zeptá. Když se to ale obrátí - což v nápovědě tedy není, že se to nemá dělat - tak to ani nevypíše chybu syntaxe, prostě to jen smaže všechno úplně bez optání.
David Watzke avatar 2.12.2010 11:23 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Zdánlivě záludný příkaz: rm -r .* (aktualizováno)
To je tak nějak logický, vzhledem k tomu, že ty přepínače nastavujou stejnej flag. Z toho co je napsáno v manu to vyplývá. Navíc snad když něco zkouším a nevím co se stane, tak to nepustím na důležitý data, ne? :-D A když už, obnovím si je ze zálohy.
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
2.12.2010 11:31 Mortal | skóre: 26 | blog: mortals_log
Rozbalit Rozbalit vše Re: Zdánlivě záludný příkaz: rm -r .* (aktualizováno)
Odpovědět | Sbalit | Link | Blokovat | Admin
kolega jednou omylem udelal `chown user .` misto `chown user *`
nic to nesmazalo ale opravovat se muselo hodne, tahle prihoda se stala pred nekolika lety na slackware
V pekle jsou samé diskety a ďábel je velká disketová mechanika
2.12.2010 11:58 Mortal | skóre: 26 | blog: mortals_log
Rozbalit Rozbalit vše Re: Zdánlivě záludný příkaz: rm -r .* (aktualizováno)
kdyz to tak po sobe ctu, zda se mi to jako moc velke sci-fi
upresneni: tohle mi rekl a ja to v historii prikazu bud nehledal abych to videl na vlastni oci nebo si to blbe pamatuji
kazdopadne jsem si zafixoval: nikdy neudelat preklep zamenit "." a "*"
V pekle jsou samé diskety a ďábel je velká disketová mechanika
Amarok avatar 2.12.2010 21:46 Amarok | skóre: 33 | blog: blogoblog
Rozbalit Rozbalit vše Re: Zdánlivě záludný příkaz: rm -r .* (aktualizováno)
... a taky vzdycky pred pouzitim rm -r davat pozor, jestli neni po ceste nejaky namountovany disk... takhle jsem malem prisel o dulezite veci na externim disku :-)
GNUniverse - May the source be with you...
msk avatar 3.12.2010 16:45 msk | skóre: 27 | blog: msk
Rozbalit Rozbalit vše Re: Zdánlivě záludný příkaz: rm -r .* (aktualizováno)
Haha, to je pravda pravduca ...

Založit nové vláknoNahoru

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.