Differenza tra rmdir e rm -r


9

Di solito elimino le directory usando rm :

rm -r myDir

Tuttavia sono a conoscenza di un altro comando, rmdir , che sembra fare altrettanto bene il lavoro:

rmdir myDir

Qual è la differenza tra questi due comandi e quando dovrebbero essere usati ciascuno?


2
Il tuo rmdir funziona se ci sono file nella sottodirectory?
Jeff Schaller

1
Vedi anche l'omonima chiamata di sistema rmdir(2)che può rimuovere solo le directory vuote.
David Foerster,

4
A proposito, c'è una procedura "corretta" per usare rm -r: (1) Digitare il comando, ma non inserirlo (2) Allontanare le mani dalla tastiera (3) Contare fino a cinque (4) Premere INVIO. Ho iniziato a fare qualcosa del genere con tutti i comandi pericolosi, per darmi la possibilità di vedere cosa sto facendo, assicurarmi di aver digitato correttamente le cose, pensare a possibili conseguenze impreviste, ecc. A volte questo mi porta per cancellare il mio comando e fare prima alcuni controlli extra, per esempio.
Aj

3
@ajb rm -rf ~ /*- cancella la mia directory home. O aspetta, forse ripulisci il sistema. Sempre bene ricontrollare;).
Tom Carpenter,

1
@ajb Nota che rmdire rm -rsono due corde della stessa lunghezza :-)
Kusalananda

Risposte:


14

rm -rrimuove una directory e tutto il suo contenuto; rmdirrimuoverà una directory solo se la directory è vuota. Mi piace usare quanto segue per rimuovere una directory e tutto il suo contenuto:

rm -rf <directory_to_be_removed>

17
Si noti che di solito non si dovrebbe usare -fse non è necessario. È utile da usare -rfogni volta, ma disabilita (quasi) tutti i controlli di sicurezza.
allo

5
-1 per la raccomandazione non ufficiale della -fbandiera di rm che può avere conseguenze imprevedibili e irripetibili
cat

Quindi rmdirè giusto rm -d?
Stan Strum,

@StanStrum -dnon è un'opzione standard per rm.
Kusalananda

@cat Il rmcomando in generale può avere queste conseguenze. Il -fflag è utile quando si esegue set -ein uno script. Concordo sul fatto che l'utilizzo senza pensare non sia necessario .
Kusalananda

1

Dovresti usarlo rm -rquando vuoi rimuovere ricorsivamente una directory e tutto il suo contenuto, o quando la destinazione può essere una directory o un file e vuoi eliminarla indipendentemente da ciò che è.

È necessario utilizzare rmdirquando si desidera rimuovere una directory vuota.

Il rmdircomando è utile poiché si rifiuta di rimuovere directory e file non vuoti. Questo serve come un fermo di sicurezza in situazioni in cui potresti voler essere assolutamente sicuro che ciò che stai eliminando sia una directory e che la directory sia vuota prima di eliminarla (ad esempio in uno script) e che vuoi trattarla come una condizione di errore altrimenti.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.