Cosa fa rm -rf?

Cosa fa rm -rf quando viene utilizzato per rimuovere file o directory?

Come funzionano le opzioni -r e -f insieme?

Il comando rm -rf è lo stesso di rm -r -f .

Dalla pagina man rm (digita man rm in un terminale per vederlo) -r fa:

 remove directories and their contents recursively 

E -f fa:

 ignore nonexistent files and arguments, never prompt 

Quindi in combinazione fanno entrambi.

In effetti è un comando molto pericoloso perché rimuove in modo ricorsivo tutto all’interno della directory scelta (o semplicemente rimuove il file che si sceglie), e lo farà senza mai averlo richiesto.

Si prega di utilizzare questo comando con cura!

Oltre alla precedente risposta corretta, vorrei insegnarti a pescare:

Quando non sei sicuro di come funziona un comando, quali opzioni hanno e cosa fa, apri un terminale e digita

 man  

Per esempio:

 man rm 

Una volta lì, puoi cercare l’opzione. Una pagina man può essere molto lunga da leggere, quindi nel tipo di terminale:

 / 

Quindi, per esempio, facendo:

 /-f 

Puoi facilmente atterrare a:

 -f, --force ignore nonexistent files and arguments, never prompt 

Per -r fare:

 -r, -R, --recursive remove directories and their contents recursively 

È ansible spostarsi tra i risultati della ricerca utilizzando n (successivo) e N (precedente).

Bonus:

Se devi fare qualcosa, ma non conosci il nome del comando, usa apropos per cercare nelle pagine man:

 apropos  

Per esempio:

 apropos directory listing 

rm è l’abbreviazione di remove. Il flag r serve per rimuovere le directory e il loro contenuto in modo ricorsivo e il f indica la forza, e sostituisce qualsiasi richiesta di conferma.

Come è già stato detto, rm -rf è pensato per rimuovere forzatamente i file in modo ricorsivo, dove è una directory (sebbene possa essere un file benissimo).

L’intero punto di -r (rimozione ricorsiva) è che rm non può rimuovere le directory se non sono vuote, semplicemente perché la chiamata di sistema sottostante che rm usa ( scollega ) opera solo su directory vuote. Quindi, cosa fa il flag -r , è la ricerca in profondità che scende nelle directory e rimuove i file prima, e solo quando la directory è vuota – la rimuoverà. Questo stesso effetto è ottenuto tramite il comando find con -delete flag (quando non si specifica il filtro per -type , ma questa è un’altra storia).

Per quanto riguarda -f , fa due cose: una impedisce di chiedere se si desidera rimuovere il file o meno (ad esempio quando si rimuove un file di proprietà di un altro utente all’interno della directory, non verrà visualizzato rm: remove write-protected regular empty file 'f1'? prompt di conferma), e ignora i file non esistenti. Quindi, ad esempio, con un nome di file inesistente, dovresti ottenere rm: cannot remove 'nonexistent': No such file or directory errore di rm: cannot remove 'nonexistent': No such file or directory .

Guarda anche:

  • Perché rm è autorizzato a eliminare un file di proprietà di un altro utente?
  • Fare un rm -rf su un enorme albero di directory richiede ore