Puisque je pense que cette question concerne davantage ce que * fait (et non rm), essayons une autre approche.
Si vous n'êtes pas sûr de ce que fait le *, vous pouvez d'abord "tester" en utilisant une commande inoffensive comme echo. Avant d'exécuter cela, essayez de deviner ce qu'ils afficheront si vous les exécutez dans votre répertoire personnel.
echo *
echo .*
Mais d'abord, créons un terrain de jeu afin que nous puissions jouer avec les étoiles et voir avec quoi nous nous retrouvons.
mkdir ~/star_test/
cd ~/star_test/
>.file1
>file2
Maintenant, dans ce dir, nous avons ceci:
cj@zap:~/star_test$ ls -1a
.
..
.file1
file2
Notez maintenant ce que le * développe en utilisant la commande echo:
cj@zap:~/star_test$ echo *
file2
cj@zap:~/star_test$ echo .*
. .. .file1
Voyons donc ce qui se passe avec la commande rm
cj@zap:~/star_test$ rm -rf *
cj@zap:~/star_test$ ls -1a
.
..
.file1
Comme vous le voyez, il n'a supprimé que le fichier2, car * ne s'est étendu qu'au fichier2. Si vous tapez rm -rf. *, Ce serait la même chose que d'écrire
rm -rf . .. .file1
Et pour être honnête, ça n'a pas l'air sympa;)
J'espère que cela clarifie la partie * de votre question.
Mise à jour:
Cependant, comme le souligne Ankur Goel, il existe une sorte de protection intégrée à rm (un peu inhabituel pour les commandes shell :)
Créons un nouveau terrain de jeu:
cd ~/star_test/
mkdir -p test1/test2/test3
sudo chown root.root test1
cd test1/test2/test3/
>.file1
>file2
Alors maintenant, nous avons à nouveau cela, mais avec test1 appartenant à root comme protection si rm commence à devenir fou.
cj@zap:~/star_test/test1/test2/test3$ ls -a
. .. file2 .file1
cj@zap:~/star_test/test1/test2/test3$ echo .*
. .. .file1
Supprimons donc tout:
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
Et il semble que rm n'ait pas été supprimé. et .. même si on le lui avait dit !!!
Donc, après cette longue réponse, il s'avère sûr de tout supprimer dans un répertoire avec ceci:
rm -rf * .*
Mais je l'utiliserais avec précaution, car je ne suis pas sûr que toutes les implémentations de rm se comportent comme ça!
rm -rf ./*
et spécifierais explicitement le répertoire courant ... mais Ankur semble dire que cela n'a pas d'importance de toute façon.