O que rm -rf
faz quando usado para remover arquivos ou diretórios?
Como as opções -r
e -f
funcionam juntas?
O que rm -rf
faz quando usado para remover arquivos ou diretórios?
Como as opções -r
e -f
funcionam juntas?
Respostas:
O comando rm -rf
é o mesmo que rm -r -f
.
Na rm
página do manual (digite man rm
um terminal para vê-lo) -r
:
remove directories and their contents recursively
E -f
faz:
ignore nonexistent files and arguments, never prompt
Então, em combinação, eles fazem as duas coisas.
Por favor, use este comando com cuidado!
rm -rf /
teoricamente excluirá todos os arquivos do seu computador que residam em um diretório para o qual você tenha permissão de gravação. Se você é root, isso significa acabar com o sistema inteiro. (Na prática, ele não funciona porque GNU rm
tem um caso especial que se recusa a permitir que rm -r /
a menos que você também dizem --no-preserve-root
.)
rm -rf /
ver se foi capturado corretamente.
Além da resposta correta anterior, eu gostaria de ensinar como pescar:
Quando você não tiver certeza de como um comando funciona, quais opções têm e o que faz, abra um terminal e digite
man <command>
Por exemplo:
man rm
Uma vez lá, você pode procurar a opção. Uma página de manual pode ser muito longa para ler, portanto, no tipo de terminal:
/<pattern>
Então, por exemplo, fazendo:
/-f
Você pode facilmente chegar a:
-f, --force
ignore nonexistent files and arguments, never prompt
Para -r do:
-r, -R, --recursive
remove directories and their contents recursively
Você pode alternar entre os resultados da pesquisa usando n
(próximo) e N
(anterior).
Se você precisar fazer algo, mas não souber o nome do comando, use apropos
para pesquisar nas páginas do manual:
apropos <pattern>
Por exemplo:
apropos directory listing
rm
é curto para remover. O r
sinalizador é para remover diretórios e seu conteúdo recursivamente e os f
meios forçam, e substitui qualquer solicitação de confirmação.
r flag is to remove directories
não é certo .. remove os diretórios junto com seu conteúdo, é uma operação recursiva .. de acordo com suas palavras, ele apenas removeria os diretórios, e quanto aos subdiretórios, arquivos sob ele? como entrada de diretório contém o mapeamento nome-inode somente, isso só não faz qualquer sentido ..
Como já foi mencionado, o rm -rf <ARG>
objetivo é remover arquivos recursivamente à força, onde <ARG>
há um diretório (embora possa ser um arquivo muito bem).
O ponto principal de -r
(remoção recursiva) é que rm
não é possível remover diretórios se eles não estiverem vazios, simplesmente porque a chamada do sistema subjacente que rm
usa ( desvincular ) opera apenas em diretórios vazios. Assim, o que o -r
sinalizador faz é a pesquisa aprofundada, descendente nos diretórios e a remoção dos arquivos primeiro, e somente quando o diretório estiver vazio - ele será removido. Esse mesmo efeito é alcançado via find
comando com -delete
sinalizador (quando você não especifica a filtragem por -type
, mas isso é outra história).
Quanto a -f
isso, ele faz duas coisas - uma evita perguntar se você deseja remover o arquivo ou não (como quando você está removendo um arquivo pertencente a outro usuário de dentro do seu diretório, ele não mostra rm: remove write-protected regular empty file 'f1'?
o prompt de confirmação) e ignora arquivos inexistentes. Por exemplo, com um nome de arquivo inexistente, você deve receber um rm: cannot remove 'nonexistent': No such file or directory
erro.
Veja também: