Como acho que essa pergunta é mais sobre o que * faz (e não rm), vamos tentar outra abordagem.
Se você não tiver certeza do que o * faz, você pode "testar" primeiro usando um comando inofensivo como eco. Antes de executar isso, tente adivinhar o que eles mostrarão se você executá-los no diretório dir.
echo *
echo .*
Mas primeiro vamos criar um playground para que possamos brincar com as estrelas e ver o que acabamos.
mkdir ~/star_test/
cd ~/star_test/
>.file1
>file2
Agora, nesse diretório, temos o seguinte:
cj@zap:~/star_test$ ls -1a
.
..
.file1
file2
Agora observe o que o * expande para usar o comando echo:
cj@zap:~/star_test$ echo *
file2
cj@zap:~/star_test$ echo .*
. .. .file1
Então, vamos ver o que acontece com o comando rm
cj@zap:~/star_test$ rm -rf *
cj@zap:~/star_test$ ls -1a
.
..
.file1
Como você vê, ele removeu apenas o arquivo2, pois * foi expandido apenas para o arquivo2. Se você digitar rm -rf. *, Seria o mesmo que escrever
rm -rf . .. .file1
E para ser honesto, isso não parece divertido;)
Espero que isso esclareça a parte * da sua pergunta.
Atualização:
No entanto, como Ankur Goel aponta, existe algum tipo de proteção embutida no rm (algo incomum para comandos do shell :)
Vamos criar um novo playground:
cd ~/star_test/
mkdir -p test1/test2/test3
sudo chown root.root test1
cd test1/test2/test3/
>.file1
>file2
Portanto, agora temos isso de novo, mas com o test1 de propriedade do root como proteção, se o rm começar a enlouquecer.
cj@zap:~/star_test/test1/test2/test3$ ls -a
. .. file2 .file1
cj@zap:~/star_test/test1/test2/test3$ echo .*
. .. .file1
Então, vamos remover tudo:
cj@zap:~/star_test/test1/test2/test3$ rm -rf .*
rm: cannot remove directory `.'
rm: cannot remove directory `..'
cj@zap:~/star_test/test1/test2/test3$ ls -a
. .. file2
E parece que rm não removeu. e .. mesmo se dissermos para ele !!!
Portanto, após essa longa resposta, é seguro remover tudo em um diretório com isso:
rm -rf * .*
Mas eu usaria isso com cuidado, pois não tenho certeza de que todas as implementações de rm se comportem assim!
rm -rf ./*
especificaria explicitamente o diretório atual ... mas Ankur parece dizer que isso não importa.