Diferença entre rmdir e rm -r


9

Eu costumo excluir diretórios usando rm :

rm -r myDir

No entanto, estou ciente de outro comando, rmdir , que parece fazer o trabalho da mesma forma:

rmdir myDir

Qual é a diferença entre esses dois comandos e quando cada um deve ser usado?


2
Seu rmdir funciona se houver arquivos no subdiretório?
Jeff Schaller

1
Consulte também a chamada de sistema de mesmo nome rmdir(2)que pode remover apenas diretórios vazios.
David Foerster

4
A propósito, existe um procedimento "correto" para o uso rm -r: (1) Digite o comando, mas não o insira (2) Afaste as mãos do teclado (3) Conte até cinco (4) Pressione ENTER. Comecei a fazer algo assim com todos os comandos perigosos, para me dar uma chance de olhar para o que estou fazendo, certificar-se de digitar as coisas corretamente, pensar se poderia haver consequências inesperadas etc. Ocasionalmente, isso me leva para apagar meu comando e fazer algumas verificações extras primeiro, por exemplo.
ajb 02/07/19

3
@ajb rm -rf ~ /*- limpa meu diretório pessoal. Ou espere, talvez limpe o sistema. Sempre bom verificar novamente;).
Tom Carpenter

1
@ajb Observe que rmdire rm -rsão duas strings do mesmo comprimento :-)
Kusalananda

Respostas:


14

rm -rremove um diretório e todo o seu conteúdo; rmdirsó removerá um diretório se o diretório estiver vazio. Eu gosto de usar o seguinte para remover um diretório e todo o seu conteúdo:

rm -rf <directory_to_be_removed>

17
Observe que você geralmente não deve usar -fse não precisar. É fácil de usar -rfsempre, mas desativa (quase) todas as verificações de segurança.
allo

5
-1 para recomendação uneccesary de de rm -fbandeira que pode ter, consequências imprevisíveis unrevertable
gato

Então rmdiré só rm -d?
Stan Strum

@StanStrum -dnão é uma opção padrão para rm.
Kusalananda

@cat O rmcomando em geral pode ter essas consequências. O -fsinalizador é útil quando executado set -eem um script. Concordo que usar sem pensar é desnecessário .
Kusalananda

1

Você deve usar rm -rquando quiser remover recursivamente um diretório e todo o seu conteúdo, ou quando o destino puder ser um diretório ou arquivo e desejar excluí-lo, independentemente do que seja.

Você deve usar rmdirquando desejar remover um diretório vazio.

O rmdircomando é útil, pois se recusa a remover diretórios e arquivos não vazios. Isso serve como uma captura de segurança em situações nas quais você pode ter certeza absoluta de que o que está excluindo é um diretório e que o diretório está vazio antes de excluí-lo (por exemplo, em um script) e deseja tratá-lo como uma condição de erro de outra forma.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.