Так как я думаю, что этот вопрос больше о том, что делает * (а не 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 ведут себя так!