Перед запуском команды shell производит замену некоторых специальных символов. В данном случае ~ заменится на путь к домашнему каталогу текущего пользователя, а * заменится на список имён нескрытых файлов в текущем каталоге.
Т.е. предположим, мы запускаем команду от пользователя test, при этом текущий каталог /home/test/Desktop и в нём есть 4 файла: file1, file2, file3, .DS_Store