Da ich der Meinung bin, dass sich diese Frage eher darauf bezieht, was * tut (und nicht rm), versuchen wir es mit einem anderen Ansatz.
Wenn Sie sich nicht sicher sind, was das * bewirkt, können Sie es zuerst mit einem harmlosen Befehl wie echo "testen". Versuchen Sie, bevor Sie dies ausführen, zu erraten, was sie anzeigen, wenn Sie sie in Ihrem Heimverzeichnis ausführen.
echo *
echo .*
Aber zuerst wollen wir einen Spielplatz schaffen, auf dem wir mit den Sternen spielen und sehen können, womit wir enden.
mkdir ~/star_test/
cd ~/star_test/
>.file1
>file2
In diesem Verzeichnis haben wir Folgendes:
cj@zap:~/star_test$ ls -1a
.
..
.file1
file2
Beachten Sie nun, zu was das * mit dem Befehl echo erweitert wird:
cj@zap:~/star_test$ echo *
file2
cj@zap:~/star_test$ echo .*
. .. .file1
Mal sehen, was mit dem Befehl rm passiert
cj@zap:~/star_test$ rm -rf *
cj@zap:~/star_test$ ls -1a
.
..
.file1
Wie Sie sehen, hat er nur die Datei2 entfernt, da * nur zu Datei2 erweitert wurde. Wenn Sie rm -rf. * Eingeben würden, wäre das dasselbe wie Schreiben
rm -rf . .. .file1
Und um ehrlich zu sein, das sieht nicht lustig aus;)
Hoffe, dies klärt den * Teil Ihrer Frage.
Update:
Ankur Goel weist jedoch darauf hin, dass in rm eine Art Schutz integriert ist (ungewöhnlich für Shell-Befehle :)
Erstellen wir einen neuen Spielplatz:
cd ~/star_test/
mkdir -p test1/test2/test3
sudo chown root.root test1
cd test1/test2/test3/
>.file1
>file2
Jetzt haben wir das also wieder, aber mit test1 im Besitz von root als Schutz, wenn ich anfange wütend zu werden.
cj@zap:~/star_test/test1/test2/test3$ ls -a
. .. file2 .file1
cj@zap:~/star_test/test1/test2/test3$ echo .*
. .. .file1
Also lasst uns alles entfernen:
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
Und es sieht aus wie rm nicht entfernt hat. und ... auch wenn wir es ihm sagten !!!
Nach dieser langen Antwort erweist es sich als sicher, alles in einem Verzeichnis zu entfernen:
rm -rf * .*
Aber ich würde dies mit Vorsicht verwenden, da ich nicht sicher bin, ob sich alle Implementierungen von rm so verhalten!
rm -rf ./*
das aktuelle Verzeichnis tun und explizit angeben ... aber Ankur scheint zu sagen, dass es sowieso keine Rolle spielt.