Dal momento che penso che questa domanda riguardi più ciò che * fa (e non rm), proviamo un altro approccio.
Se non sei sicuro di cosa faccia *, puoi prima "testare" usando un comando innocuo come echo. Prima di eseguire questo, prova a indovinare cosa mostreranno se li esegui nella tua home directory.
echo *
echo .*
Ma prima creiamo un parco giochi in modo da poter giocare con le stelle e vedere con cosa finiamo.
mkdir ~/star_test/
cd ~/star_test/
>.file1
>file2
Ora in questa directory abbiamo questo:
cj@zap:~/star_test$ ls -1a
.
..
.file1
file2
Ora nota cosa si espande in * usando il comando echo:
cj@zap:~/star_test$ echo *
file2
cj@zap:~/star_test$ echo .*
. .. .file1
Quindi vediamo cosa succede con il comando rm
cj@zap:~/star_test$ rm -rf *
cj@zap:~/star_test$ ls -1a
.
..
.file1
Come vedi, ha rimosso solo il file2, poiché * solo espanso in file2. Se si digita rm -rf. * Sarebbe lo stesso della scrittura
rm -rf . .. .file1
E a dire il vero, non sembra divertente;)
Spero che questo chiarisca la * parte della tua domanda.
Aggiornamento:
Comunque, come sottolinea Ankur Goel, c'è un qualche tipo di protezione integrata in rm (un po 'insolito per i comandi della shell :)
Creiamo un nuovo parco giochi:
cd ~/star_test/
mkdir -p test1/test2/test3
sudo chown root.root test1
cd test1/test2/test3/
>.file1
>file2
Quindi ora abbiamo di nuovo questo, ma con test1 di proprietà di root come protezione se rm inizia a impazzire.
cj@zap:~/star_test/test1/test2/test3$ ls -a
. .. file2 .file1
cj@zap:~/star_test/test1/test2/test3$ echo .*
. .. .file1
Quindi rimuoviamo tutto:
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 sembra che rm non sia stato rimosso. e .. anche se glielo dicessimo !!!
Quindi, dopo questa lunga risposta, risulta sicuro rimuovere tutto in una directory con questo:
rm -rf * .*
Ma lo userei con cura, poiché non sono sicuro che tutte le implementazioni di rm si comportino in questo modo!
rm -rf ./*
e specificherei esplicitamente la directory corrente ... ma Ankur sembra dire che non importa comunque.