2015-06-03 14 views

Odpowiedz

7

Samo dostarczenie posortowanej natury, to rozszerzenie powłoki. Jeśli było wpisać rm * The shell rozwinie, że do czegoś takiego:

rm aaa bbb ccc 

i rm nigdy nawet zobaczyć* argumentem. Nawiasem mówiąc, nie jestem pewien, że sortowane zachowanie jest gwarantowana przez wszystkich muszli ale z pewnością jest dla bash, zgodnie z podręcznika:

... zastąpione alfabetycznej listy nazw dopasowując wzór.

Komenda rm -rf * jest nieco dziwne, ponieważ hybrydowy sprawa, nawet jeśli powłoka sortuje * wpisy, to nadal tylko na pierwszym poziomie wpisów.

Stąd rm -rf * może również rozwinąć się:

rm -rf aa_dir bb_dir cc_dir 

ale zupełnie się do tego, jak rm prac wewnętrznie co do kolejności przetwarzania wpisów pod tych katalogów (chociaż, oczywiście, jest to bezpieczny zakład wszystkie wpisy w katalogu zostaną usunięte przed samym katalogiem).

Najprawdopodobniej po prostu użyjesz readdir() lub czegoś podobnego, co uporządkuje rzeczy w oparciu o to, jak są przechowywane w plikach katalogowych, a nie w porządku alfabetycznym.

W każdym razie kolejność ich usuwania prawdopodobnie nie powinna mieć znaczenia - zostaną one ostatecznie usunięte, o ile pozwolą na to pozwolenia.

+0

Dzięki! to jest pomocne! Dużo googlowałem, istnieje wiele nie wystarczająco szczegółowych odpowiedzi. –