Если оболочка встречает символ *, то она воспринимает его как символ шаблона.
Если это символ шаблона, то она берёт символы вокруг него, составляя шаблон.
Когда шаблон составлен, она берёт все имена из текущей директории по порядку и сравнивает с этим шаблоном.
Все имена, которые совпали с шаблоном, вставляются через пробел вместо шаблона.
А потом всё это дело выполняется.
Это пример
[guest@localhost t]$ ls
[guest@localhost t]$ touch cat
[guest@localhost t]$ echo hello >file.txt
[guest@localhost t]$ ll
итого 4
-rw-rw-r--. 1 guest guest 0 дек 30 11:32 cat
-rw-rw-r--. 1 guest guest 6 дек 30 11:32 file.txt
[guest@localhost t]$ *
hello
[guest@localhost t]$