Эти шаблоны не являются регулярными выражениями, их обычно называют шаблонами глобуса.
И ни в коем случае оболочка не будет правильно расширять шаблоны глобусов для имен пакетов, которые будут использоваться с apt-get. Оболочки будут только расширять шаблоны глобусов на основе файлов, которые присутствуют в вашей локальной файловой системе.
Другие оболочки, которые вы использовали, также не расширяют этот шаблон, но вместо сообщения об ошибке они передают аргумент в виде apt-get, который затем может сопоставить сам шаблон и сделать это с именами доступных пакетов. , Вы можете получить это поведение из zsh, используя:
unsetopt no_match
Но было бы лучше привыкнуть к цитированию специальных символов, таких как *
если вы не хотите, чтобы эти шаблоны расширялись оболочкой. Если при выполнении этой команды у вас был файл, соответствующий этому шаблону, в текущем каталоге, то любая из этих оболочек расширит шаблон до соответствия этому файлу перед запуском apt-get, это вряд ли даст ожидаемые результаты.
Любое из следующего будет работать в любой из этих оболочек, даже если у вас есть файлы, которые соответствуют шаблону:
sudo apt-get install llvm-3.1\*
sudo apt-get install 'llvm-3.1*'
sudo apt-get install "llvm-3.1*"
Это не позволит оболочке попытаться некорректно развернуть шаблон, а для zsh будет исключено сообщение об ошибке, если шаблон нельзя развернуть.