Por que o "rm -rf ./" não exclui nada?

2

O comando rm -rf ./ não faz nada em um diretório cheio de sub-diretórios e arquivos. Por quê? O -r não deveria ser recursivo?

Para adicionar mais confusão, até imprime uma mensagem de erro sugerindo que está atravessando o diretório:

rm: refusing to remove ‘.’ or ‘..’ directory: skipping ‘./’
    
por Howard 27.03.2015 / 09:42

2 respostas

6

O comando rm se recusa a excluir o diretório pelo '.' nome. Se você usar o nome do caminho completo, ele deve excluir o diretório recursivamente.

Também é possível excluir o diretório, se este for o diretório atual.

[testuser@testhost] /tmp$ mkdir ff

[testuser@testhost] /tmp$ cd ff

[testuser@testhost] /tmp/ff$ touch a b c

[testuser@testhost] /tmp/ff$ rm -rf ./
rm: cannot remove directory: ‘./’

[testuser@testhost] /tmp/ff$ ls
a  b  c

[testuser@testhost] /tmp/ff$ rm -rf /tmp/ff

[testuser@testhost] /tmp/ff$ ls

[testuser@testhost] /tmp/ff$ ls ../ff
ls: cannot access ../ff: No such file or directory

[testuser@testhost] /tmp/ff$ cd ..

[testuser@testhost] /tmp$ ls ff
ls: cannot access ff: No such file or directory

De info rm :

Qualquer tentativa de remover um arquivo cujo último componente de nome de arquivo é .' or .. 'é rejeitada sem nenhum aviso.

    
por 27.03.2015 / 09:59
0

Você não pode remover o diretório atual porque o diretório atual se tornaria inválido.

Primeiro, mude para o diretório que você deseja remover (por exemplo, cd .. ) e remova o diretório desejado usando o caminho completo ou relativo do lado de fora .

    
por 27.03.2015 / 09:46

Tags