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 .