2015-06-03 15 views
5

Ho pensato che rm rimuova i file in ordine alfabetico, ma chiaramente non è dopo il mio esecuzione.Linux rm -rf * cancella gli ordini?

enter image description here

Allora, che cosa 's l'ordine del comando rm executation?

+4

http://unix.stackexchange.com/questions/161770/how-does-rm-r-go-about-recursively-removing-in-what-order – runDOSrun

risposta

7

Non è lo rm che fornisce la natura ordinata, è l'espansione della shell. Se si digita rm *, il shell si espanderebbe che a qualcosa di simile:

rm aaa bbb ccc 

e rm non avrebbe mai nemmeno vedere un argomento *. Tra l'altro, io non sono certo che il comportamento ordinato è garantita per tutti i conchiglie ma è certamente per bash, come per la pagina di manuale:

... sostituito con un elenco in ordine alfabetico dei nomi di file corrispondenti alla modello.

Il comando rm -rf * è un po 'strano, caso ibrido in quanto, anche se il guscio ordina i * voci, che è ancora solo per il primo livello di voci.

Quindi rm -rf * può ben espandersi:

rm -rf aa_dir bb_dir cc_dir 

ma è totalmente a come rm funziona internamente per l'ordine di elaborazione delle voci sotto queste directory (anche se, ovviamente, è una scommessa sicura tutte le voci in una directory verranno cancellate prima della directory stessa).

Più probabilmente userà lo readdir() o qualcosa di simile, che ordinerà le cose in base a come sono memorizzate nei file di directory piuttosto che in qualche ordine alfabetico.

In ogni caso, l'ordine in cui sono eliminati probabilmente non dovrebbe avere importanza - verranno eventualmente eliminati, ammesso che le autorizzazioni lo consentano.

+0

Grazie! è utile! Ho cercato spesso su google, ci sono molte risposte non abbastanza dettagliate. –

Problemi correlati