Так как я думаю, что этот вопрос больше о том, что делает * (а не rm), давайте попробуем другой подход.
Если вы не уверены, что делает *, вы можете сначала "протестировать" его, используя безвредную команду, такую как echo.
Прежде чем запустить это, попытайтесь угадать, что они покажут, если вы запустите их в своем домашнем каталоге.
echo *
echo .*
Но сначала давайте создадим игровую площадку, чтобы мы могли поиграть со звездами и посмотреть, чем мы закончим.
mkdir ~/star_test/
cd ~/star_test/
>.file1
>file2
Теперь в этом каталоге мы имеем это:
cj@zap:~/star_test$ ls -1a
.
..
.file1
file2
Теперь обратите внимание, что * расширяется в использовании команды echo:
cj@zap:~/star_test$ echo *
file2
cj@zap:~/star_test$ echo .*
. .. .file1
Итак, давайте посмотрим, что происходит с командой rm
cj@zap:~/star_test$ rm -rf *
cj@zap:~/star_test$ ls -1a
.
..
.file1
Как вы видите, он удалил только файл2, так как * расширился только до файла2.
Если вы наберете rm -rf. *, Это будет то же самое, что и запись
rm -rf . .. .file1
И, честно говоря, это не выглядит весело;)
Надеюсь, что это проясняет * часть вашего вопроса.
Обновление: Однако, как отмечает Ankur Goel, в rm встроена какая-то защита (довольно необычная для команд оболочки :)
Давайте создадим новую игровую площадку:
cd ~/star_test/
mkdir -p test1/test2/test3
sudo chown root.root test1
cd test1/test2/test3/
>.file1
>file2
Так что теперь у нас это снова, но с test1, принадлежащим root в качестве защиты, если rm начнет сходить с ума.
cj@zap:~/star_test/test1/test2/test3$ ls -a
. .. file2 .file1
cj@zap:~/star_test/test1/test2/test3$ echo .*
. .. .file1
Итак, давайте удалим все:
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
И похоже рм не убрал. и .. даже если бы мы сказали ему !!!
Так что после этого длинного ответа оказывается безопасным удалить все в директории с помощью этого:
rm -rf * .*
Но я бы использовал это с осторожностью, так как я не уверен, что все реализации rm ведут себя так!