Eu acho que a página man falta um pequeno detalhe neste caso. A opção -f
de rm
na verdade tem alguns casos de uso:
- Para evitar um código de saída de erro
- Para evitar ser solicitado
- Para ignorar verificações de permissão
Você está certo de que é inútil remover um arquivo inexistente, mas em scripts é realmente conveniente dizer "Não quero esses arquivos, excluí-los se você os encontrar, mas não me incomoda se eles não existem ". Algumas pessoas usam o set -e
em seu script para que ele pare em qualquer erro (para evitar mais danos que o script possa causar), e rm -rf /home/my/garbage
é mais fácil do que if [[ -f /home/my/garbage ]]; then rm -r /home/my/garbage; fi
.
Uma nota sobre verificações de permissão: para excluir um arquivo, você precisa de permissão de gravação no diretório pai , não no próprio arquivo. Então, digamos que, de alguma forma, existe um arquivo de propriedade de root
em seu diretório inicial e você não tem sudo
access, você ainda pode remover o arquivo usando a opção -f
. Se você usar o Git, verá que o Git não deixa a permissão de gravação nos arquivos de objeto que ele cria:
-r--r--r-- 1 phunehehe phunehehe 62 Aug 31 15:08 testdir/.git/objects/7e/70e8a2a874283163c63d61900b8ba173e5a83c
Portanto, se você usar rm
, a única maneira de excluir um repositório Git sem usar root
é usar rm -rf
.