Isto é o que diz a página man do CentOS:
-f, --force
ignore nonexistent files, never prompt
-r, -R, --recursive
remove directories and their contents recursively
Pelo que entendi (graças a alguns comentários abaixo), o seguinte é verdadeiro para os sinalizadores -r
e -f
:
-r
- recursivamente exclui o conteúdo de um diretório, incluindo arquivos e subdiretórios ocultos
- dependendo da sua configuração, ele pode solicitar permissão (por exemplo, ao usar o sinal
--interactive
). Algumas distribuições fazem isso por padrão. - pode ser usado para remover um diretório, se você quiser fazer isso, simplesmente forneça o caminho do diretório (por exemplo:
/path/to/directory
)
-f
- não exclui recursivamente o conteúdo de um diretório, apenas remove arquivos que correspondem diretamente ao caminho fornecido (por exemplo,
example/file1
ouexample/*
). - Nunca elimina subdiretórios
- Nunca pede permissão, basicamente o
yes to all
no Windows
Abaixo estão alguns exemplos, todos eles começam com a seguinte estrutura:
example/
file1
file2
file3
.file
dir/
file1
file2
file3
.file
Eu habilitei o detalhamento e o modo interativo por padrão para esses exemplos. Algumas distros fazem isso enquanto outras não.
exemplo de rm
$ rm example
rm: cannot remove 'example': Is a directory
Como você pode ver, rm
não remove diretórios por padrão.
rm example -f
$ rm example -f
rm: cannot remove 'example': Is a directory
Usar o sinalizador -f
ainda não permite a remoção de diretórios.
rm example -r
$ rm example -r
rm: descend into directory 'example'? yes
rm: remove regular empty file 'example/file3'? yes
removed 'example/file3'
rm: remove regular empty file 'example/file2'? yes
removed 'example/file2'
rm: descend into directory 'example/dir'? yes
rm: remove regular empty file 'example/dir/.file'? yes
removed 'example/dir/.file'
rm: remove regular empty file 'example/dir/file3'? yes
removed 'example/dir/file3'
rm: remove regular empty file 'example/dir/file2'? yes
removed 'example/dir/file2'
rm: remove regular empty file 'example/dir/file1'? yes
removed 'example/dir/file1'
rm: remove directory 'example/dir'? yes
removed directory: 'example/dir'
rm: remove regular empty file 'example/file1'? yes
removed 'example/file1'
rm: remove directory 'example'? yes
removed directory: 'example'
Como você pode ver, a permissão para cada arquivo e diretório é solicitada, os arquivos ocultos também são removidos.
exemplo rm / * -f
$ rm example/* -f
rm: cannot remove 'example/dir': Is a directory
removed 'example/file1'
removed 'example/file2'
removed 'example/file3'
Aqui, você não precisa de permissão, os diretórios não são excluídos e nem os arquivos ocultos.
exemplo rm / * -r
$ rm example/* -r
rm: descend into directory 'example/dir'? yes
rm: remove regular empty file 'example/dir/.file'? yes
removed 'example/dir/.file'
rm: remove regular empty file 'example/dir/file3'? yes
removed 'example/dir/file3'
rm: remove regular empty file 'example/dir/file2'? yes
removed 'example/dir/file2'
rm: remove regular empty file 'example/dir/file1'? yes
removed 'example/dir/file1'
rm: remove directory 'example/dir'? yes
removed directory: 'example/dir'
rm: remove regular empty file 'example/.file'? yes
removed 'example/file'
rm: remove regular empty file 'example/file1'? yes
removed 'example/file1'
rm: remove regular empty file 'example/file2'? yes
removed 'example/file2'
rm: remove regular empty file 'example/file3'? yes
removed 'example/file3'
Aqui, o conteúdo do diretório de exemplo (não o próprio diretório) é removido, incluindo arquivos ocultos.