Da ich denke, dass diese Frage mehr darüber ist, was * tut (und nicht rm), versuchen wir einen anderen Ansatz.
Wenn Sie sich nicht sicher sind, was der * macht, können Sie zunächst einen harmlosen Befehl wie Echo "testen". Bevor Sie dies ausführen, versuchen Sie zu erraten, was angezeigt wird, wenn Sie sie in Ihrem Heimatverzeichnis ausführen.
echo * echo .*
Aber zuerst wollen wir einen Spielplatz schaffen, damit wir mit den Sternen spielen und sehen können, was uns erwartet.
mkdir ~/star_test/ cd ~/star_test/ >.file1 >file2
Jetzt in diesem Verzeichnis haben wir folgendes:
cj@zap:~/star_test$ ls -1a . .. .file1 file2
Beachten Sie nun, worauf sich der * mit dem Befehl echo erweitert:
cj@zap:~/star_test$ echo * file2 cj@zap:~/star_test$ echo .* . .. .file1
Schauen wir uns also an, 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, entspricht dies dem Schreiben
rm -rf . .. .file1
Und um ehrlich zu sein, das macht keinen Spaß;)
Ich hoffe, das klärt den * Teil Ihrer Frage.
Update: Wie Ankur Goel hervorhebt, gibt es in rm jedoch einen gewissen Schutz (eine Art ungewöhnlicher Befehl für Shellbefehle :)
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 dies wieder, aber mit test1 gehört root zum Schutz, wenn rm anfängt, berserker zu werden.
cj@zap:~/star_test/test1/test2/test3$ ls -a . .. file2 .file1 cj@zap:~/star_test/test1/test2/test3$ echo .* . .. .file1
Also lass 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 so aus, als hätte sich rm nicht entfernt. und auch wenn wir es ihm gesagt haben !!!
Nach dieser langen Antwort stellt sich heraus, dass es sicher ist, alles in einem Verzeichnis mit diesem zu entfernen:
rm -rf * .*
Aber ich würde dies mit Vorsicht verwenden, da ich nicht sicher bin, dass sich alle Implementierungen von rm so verhalten!