'rm -rf' e 'rm -r' possuem os mesmos resultados

4

Tenha em mente que eu acabei de aprender bash, então explique em termos moderados.

rm -rf e rm -r parecem fazer a mesma coisa. O tutorial ( link ) declara que -f é forçado e o computador não solicitará permissão para excluir um arquivo .

Para testar isso, criei um arquivo bloqueado, mas -r e -rf obtêm os mesmos resultados de NÃO excluir o arquivo (Permissão negada).

Por que isso acontece?

    
por Starfox64 24.11.2013 / 08:33

4 respostas

5

No Ubuntu o comando rm se comporta como esperado na remoção de arquivos que possuímos sem solicitando ao executar com a opção -f .

Exemplo para um arquivo protegido contra gravação:

:~/Test$ rm test.txt
rm: remove write-protected regular empty file ‘test.txt’? n
:~/Test$ rm -f test.txt
:~/Test$

O Root poderá remover todos os arquivos independentemente de permissões. É por isso que podemos não ver a diferença da opção -f ao executar sudo rm .

  

Devemos estar cientes de que o comportamento dos comandos do Unix pode ser diferente em um sistema operacional diferente.

Por favor, verifique também o seu comando ao executar rm recusively ( -r ). Este comando, quando acidentalmente emitido no caminho errado, irá purgar irreversivelmente todos os arquivos lá. Isso pode ser perigoso para a integridade do seu sistema, ainda mais quando executado sem solicitar erros ( -f ).

    
por Takkat 24.11.2013 / 10:08
4

Aqui está uma explicação sobre o que ambas as opções fazem.

-f Remove todos os arquivos (protegidos contra gravação ou não) em um diretório sem avisar o usuário. Em um diretório protegido contra gravação, no entanto, os arquivos nunca são removidos (sejam quais forem suas permissões), mas nenhuma mensagem é exibida. Se a remoção de um diretório protegido contra gravação for tentada, essa opção não suprimirá uma mensagem de erro.

-r Remove de forma recursiva diretórios e subdiretórios na lista de argumentos. O diretório será esvaziado de arquivos e removido. Normalmente, o usuário é solicitado a remover todos os arquivos protegidos contra gravação contidos no diretório. Os arquivos protegidos contra gravação são removidos sem avisar, no entanto, se a opção -f for usada ou se a entrada padrão não for um terminal e a opção -i não for usada. Os links simbólicos encontrados com essa opção não serão percorridos. Se a remoção de um diretório não vazio e protegido contra gravação for tentada, o utilitário sempre falhará (mesmo se a opção -f for usada), resultando em uma mensagem de erro. Sobre o rm

Veja também Referência de comandos

    
por Mitch 24.11.2013 / 08:38
2

Vamos deixar claro:

  • rm -rf directory significa força (não faça perguntas, apenas faça) a remoção recursiva do diretório .
  • rm -r directory means tentativa de remover o diretório recursivo .

Isso é o que man rm diz:

-f, --force
       ignore nonexistent files and arguments, never prompt
[...]
-r, -R, --recursive
       remove directories and their contents recursively

Outra boa informação da página de manual:

[...] if  a file is unwritable, standard input is a terminal, and
the  -f  or   --force   option   is   not   given,   or   the   -i   or
--interactive=always  option  is given, rm prompts the user for whether
to remove the file.  If the response is not affirmative,  the  file  is
skipped.

É claro que, se você não tiver permissão para remover / excluir um arquivo, receberá rm: cannot remove ‘file_name’: Permission denied error. A opção -f não fica para remover arquivos em que você não tem permissão em nenhum caso!

    
por Radu Rădeanu 24.11.2013 / 09:31
1

Parece que você não tem privilégios para excluir este arquivo, talvez a conta de administrador não seja raiz. O problema não deveria ser rm.

Ativar root: link

De qualquer forma, o OSX não é o Ubuntu e não é o Linux, então as coisas podem ser diferentes lá, é melhor perguntar em algum Fórum da OSX ...

    
por innerand 24.11.2013 / 08:52

Tags