Ho pensato che rm rimuova i file in ordine alfabetico, ma chiaramente non è dopo il mio esecuzione.Linux rm -rf * cancella gli ordini?
Allora, che cosa 's l'ordine del comando rm executation?
Ho pensato che rm rimuova i file in ordine alfabetico, ma chiaramente non è dopo il mio esecuzione.Linux rm -rf * cancella gli ordini?
Allora, che cosa 's l'ordine del comando rm executation?
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.
Grazie! è utile! Ho cercato spesso su google, ci sono molte risposte non abbastanza dettagliate. –
http://unix.stackexchange.com/questions/161770/how-does-rm-r-go-about-recursively-removing-in-what-order – runDOSrun