Cosa fa rm -rfquando viene utilizzato per rimuovere file o directory?
Come funzionano le opzioni -re -finsieme?
Cosa fa rm -rfquando viene utilizzato per rimuovere file o directory?
Come funzionano le opzioni -re -finsieme?
Risposte:
Il comando rm -rfè lo stesso di rm -r -f.
Dalla rmpagina man (digitare man rmun terminale per vederlo) -rfa:
remove directories and their contents recursively
E -ffa:
ignore nonexistent files and arguments, never prompt
Quindi in combinazione fanno entrambi.
Si prega di utilizzare questo comando con cura!
rm -rf /eliminerà teoricamente ogni file sul tuo computer che risiede in una directory per la quale hai il permesso di scrivere. Se sei root, questo significa spazzare via l'intero sistema. (In pratica, non funziona perché GNU rmha un caso speciale che rifiuta di consentire a rm -r /meno che non lo dica anche tu --no-preserve-root.)
rm -rf /a vedere se viene catturato correttamente.
Oltre alla precedente risposta corretta, vorrei insegnarti come pescare:
Quando non sei sicuro di come funzioni un comando, quali opzioni ha e cosa fa, apri un terminale e digita
man <command>
Per esempio:
man rm
Una volta lì, puoi cercare l'opzione. Una pagina man può essere davvero lunga da leggere, quindi nel tipo di terminale:
/<pattern>
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
È possibile spostarsi tra i risultati della ricerca utilizzando n(successivo) e N(precedente).
Se devi fare qualcosa, ma non conosci il nome del comando, usa aproposper cercare nelle pagine man:
apropos <pattern>
Per esempio:
apropos directory listing
rmè l'abbreviazione di remove. La rbandiera è di rimuovere ricorsivamente le directory e i loro contenuti e la fforza dei mezzi, e sostituisce qualsiasi richiesta di conferma.
r flag is to remove directories non è giusto ... rimuove le directory insieme al suo contenuto, è un'operazione ricorsiva..secondo le tue parole, rimuove solo le directory, che dire dei sottodirectory, dei file sotto di essa? poiché la voce della directory contiene solo il mapping dell'inode del nome, questo non ha alcun senso.
Come già accennato, rm -rf <ARG>si intende rimuovere forzatamente i file in modo ricorsivo, dove si <ARG>trova una directory (anche se può essere un file giusto).
Il punto centrale della -r(rimozione ricorsiva) è che rmnon è possibile rimuovere le directory se non sono vuote, semplicemente perché la chiamata di sistema sottostante che rmutilizza ( scollega ) funziona solo su directory vuote. Quindi, ciò -rche fa flag, è la ricerca approfondita che scende in directory e rimuove prima i file, e solo allora quando la directory è vuota - la rimuoverà. Lo stesso effetto si ottiene tramite il findcomando con -deleteflag (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 (come quando si rimuove un file di proprietà di un altro utente all'interno della directory, non mostrerà la rm: remove write-protected regular empty file 'f1'?richiesta di conferma) e ignora file inesistenti. Ad esempio, con un nome file inesistente, dovresti ricevere un rm: cannot remove 'nonexistent': No such file or directoryerrore.
Guarda anche: