@DanDascalescu Porque é trivialmente respondido lendo a página de manual, que deve ser o primeiro porto de escala de qualquer pessoa para responder a uma pergunta como esta.
precisa saber é o seguinte
9
Experimente e veja. (Spoiler: don't.)
imallett
3
Por Golly! Esta pergunta deve ser uma brincadeira do DevRobot! Como você poderia chegar ao seu nível de carma sem consultar as páginas de manual? Agora ... você é humano ?!
Cbhihe
2
Totalmente lê como uma brincadeira de fato. Como se alguém tentasse perguntar: "a chuva é feita de H2O?" (Uma boa resposta seria: Normalmente sim, mas no futuro, uma vez que o homem seja destruído metade da flora da Terra, 50% dela se transformará em ácido (como na chuva ácida))
syntaxerror
Respostas:
52
O comando rm -rfé o mesmo que rm -r -f.
Na rmpágina do manual (digite man rmum terminal para vê-lo) -r:
remove directories and their contents recursively
E -ffaz:
ignore nonexistent files and arguments, never prompt
Então, em combinação, eles fazem as duas coisas.
Na verdade, é um comando muito perigoso, porque removerá recursivamente tudo o que estiver dentro do diretório que você escolher (ou apenas removerá o arquivo que você escolher) e fará isso sem nunca solicitar a solicitação.
@Paul, o que a barra faria? Eu uso esse comando para remover diretórios frequentemente e sem uma barra.
Octopus
1
@ Octopus, a barra por si só indica o diretório raiz. 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 rmtem um caso especial que se recusa a permitir que rm -r /a menos que você também dizem --no-preserve-root.)
CJM
10
Mesmo assim, não recomendo tentar rm -rf /ver se foi capturado corretamente.
Cjm 06/09/2015
2
@mattburnett Também é perigoso em uma VM: você pode ter montagens que não são locais para a VM. Em particular, acredito que seja bastante comum montar um dos diretórios da máquina host na VM para compartilhar arquivos entre o host e a VM.
hvd
1
@mattburnett Eu tenho VMs. Eu não tenho uma VM em quarentena. Eu apenas não corro executáveis desconhecidos. :)
hvd
22
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).
Bônus:
Se você precisar fazer algo, mas não souber o nome do comando, use apropospara pesquisar nas páginas do manual:
rmé curto para remover. O rsinalizador é para remover diretórios e seu conteúdo recursivamente e os fmeios forçam, e substitui qualquer solicitação de confirmação.
Estritamente falando, 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 ..
heemayl
Você está certo, eu vou editar minha resposta.
Chris
1
-r remove diretórios e seu conteúdo recursivamente.
Jim Balter
3
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 rmnão é possível remover diretórios se eles não estiverem vazios, simplesmente porque a chamada do sistema subjacente que rmusa ( desvincular ) opera apenas em diretórios vazios. Assim, o que o -rsinalizador 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 findcomando com -deletesinalizador (quando você não especifica a filtragem por -type, mas isso é outra história).
Quanto a -fisso, 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 directoryerro.
Respostas:
O comando
rm -rf
é o mesmo querm -r -f
.Na
rm
página do manual (digiteman rm
um terminal para vê-lo)-r
:E
-f
faz:Então, em combinação, eles fazem as duas coisas.
Na verdade, é um comando muito perigoso, porque removerá recursivamente tudo o que estiver dentro do diretório que você escolher (ou apenas removerá o arquivo que você escolher) e fará isso sem nunca solicitar a solicitação.
Por favor, use este comando com cuidado!
fonte
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 GNUrm
tem um caso especial que se recusa a permitir querm -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
Por exemplo:
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:
Então, por exemplo, fazendo:
Você pode facilmente chegar a:
Para -r do:
Você pode alternar entre os resultados da pesquisa usando
Bônus:n
(próximo) eN
(anterior).Se você precisar fazer algo, mas não souber o nome do comando, use
apropos
para pesquisar nas páginas do manual:Por exemplo:
fonte
rm
é curto para remover. Or
sinalizador é para remover diretórios e seu conteúdo recursivamente e osf
meios forçam, e substitui qualquer solicitação de confirmação.fonte
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) é querm
não é possível remover diretórios se eles não estiverem vazios, simplesmente porque a chamada do sistema subjacente querm
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 viafind
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 mostrarm: 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 umrm: cannot remove 'nonexistent': No such file or directory
erro.Veja também:
fonte