A mesma diferença que com rm -r dir
e rm -r dir/*
.
O segundo apenas remove o que quer que seja o glob, normalmente todos os arquivos cujo nome não começa com um ponto, mas podem ser configurados no bash e provavelmente em outros. Ele também falhará se você tiver lotes de arquivos no diretório, já que a linha de comando só pode se ajustar tanto. Não que você normalmente tenha no diretório raiz, mas ainda assim.
O primeiro irá recorrer a dir
, removendo todo o conteúdo e, em seguida, o próprio diretório. Mas, como dito, você não pode remover o diretório raiz de qualquer maneira. No Linux, o erro que você recebe é Device or resource busy
, que é exatamente o que você está tentando remover qualquer diretório que possua um sistema de arquivos montado. (Ele nem se incomoda em verificar se o diretório está vazio antes de soltar isso.)
Pela mesma razão, normalmente não é possível obter o diretório raiz vazio, você terá coisas como /proc
e /sys
(no Linux) montadas e não será possível remover os pontos de montagem sem desmontar eles.
E bem, estritamente falando, remover todos os arquivos não mata o sistema ... Ele apenas faz o paradigma usual de lançar programas externos para fazer coisas um pouco difíceis de usar. Mas a execução de programas que não precisam mais de arquivos no sistema de arquivos não seria afetada. Você pode tentar com algo como busybox
shell, que integrou rm
e ls
. (Inicializar da próxima vez pode ser difícil, se os arquivos de inicialização estiverem em um sistema de arquivos montado).