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.
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: