Cosa fa rm -rf?

16

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

In che modo le opzioni -r e -f funzionano insieme?

    
posta DevRobot 05.09.2015 - 19:47
fonte

4 risposte

41

Il comando rm -rf è uguale a rm -r -f .

Dalla pagina man di 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 realtà è un comando molto pericoloso perché rimuove in modo ricorsivo tutto all'interno della directory scelta (o semplicemente rimuove il file che scegli), e lo farà senza mai averti richiesto.

Utilizza questo comando con attenzione!

    
risposta data user364819 05.09.2015 - 19:56
fonte
21

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 <command>

Ad esempio:

man rm

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

/<pattern>

Quindi, ad esempio, facendo:

/-f

Puoi facilmente raggiungere:

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

Per -r do:

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

Puoi spostarti 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 <pattern>

Ad esempio:

apropos directory listing
    
risposta data Federico Ponzi 06.09.2015 - 12:23
fonte
8

rm è l'abbreviazione di remove. Il flag r serve a rimuovere le directory e i loro contenuti in modo ricorsivo e il f indica la forza e sostituisce qualsiasi richiesta di conferma.

    
risposta data Chris 05.09.2015 - 19:51
fonte
1

Come è già stato detto, rm -rf <ARG> è pensato per rimuovere forzatamente i file in modo ricorsivo, dove <ARG> è 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 (unlink ) funziona solo su directory vuote. Pertanto, quale flag -r fa, è ricerca approfondita che scende nelle directory e rimuove i file prima e solo quindi 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).

Come per -f , fa due cose: una impedisce di chiedere se vuoi rimuovere il file o meno (come quando stai rimuovendo un file di proprietà di un altro utente dalla tua directory, non verrà mostrato prompt di conferma rm: remove write-protected regular empty file 'f1'? ) e ignora i file non esistenti. Ad esempio, con un nome di file inesistente, dovresti ottenere l'errore rm: cannot remove 'nonexistent': No such file or directory .

Vedi anche:

risposta data Sergiy Kolodyazhnyy 25.08.2018 - 18:58
fonte

Leggi altre domande sui tag