Existuje rozdíl mezi rm -rf / a rm -rf *. *?

Poruší rm -rf *.* váš souborový systém, zatímco rm -rf / to neudělá toto?

Komentáře

Odpověď

Tady „není pro to nic zvláštního, rm -rf *.* je příkaz se zástupným názvem souboru, rekurzivně odstraní všechny soubory v aktuálním adresáři, které obsahují v názvech tečku.

rm -rf / způsobí chybu při pokusu o spuštění rm v kořenovém adresáři. Toto je nařízeno POSIX :

Pokud […] operand reso lves do kořenového adresáře, rm napíše diagnostickou zprávu se standardní chybou a s takovými operandy nic nedělá.

V závislosti na na prostředí a jeho nastavení může *.* odpovídat .. nadřazenému adresáři, ale také /, pokus o odstranění je také chybou.

Ani jeden z nich nepoškodí souborový systém, rm odstraní (pokusí se) pouze soubory pomocí obvyklých volání systému souborů. Účinek na systém jako celek nebo na soubory uživatele může být samozřejmě podstatný, pokud je první příkaz proveden v adresáři obsahujícím důležité soubory.

Komentáře

  • k dostatečně novým verzím GNU rm (funkce původně ukradená ze systému Solaris IIRC). Nejlépe plakat, pokud vaše vložená lehká rm není kompatibilní s nejnovějším POSIXem.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *