Isso não faz parte de rm
, mas de uma parte do seu shell. *
é um glob que seu shell expande e passa para rm
na forma de argumentos ( rm
nunca vê um literal *
, a menos que o glob não corresponda a nada, nesse caso um literal *
é passado). Os *
globs padrão não se expandem para incluir nomes de arquivos que começam com um ponto, que inclui .
e ..
. Por exemplo:
$ tee foo bar baz .foo .bar .baz < /dev/null
$ echo *
bar baz foo
$ echo .*
. .. .bar .baz .foo