Во-первых, это не «Open Build Studio», это « Open Build Service ».
OBS - это система, позволяющая перейти от метаданных источника и упаковки для любого дистрибутива к репозиториям с готовыми пакетами для (различных версий) этих дистрибутивов. Это позволяет упаковщикам загружать исходный код и быть уверенным, что загруженный исходный код будет скомпилирован в чистой и в некоторой степени воспроизводимой среде, чтобы их пользователи могли установить то, что они хотели установить.
Он делает это путем автоматизации большей части процесса - создания chroot сборки, выполнения фактической компиляции, подписания полученных пакетов (если применимо), их копирования в нужные репозитории, подписания репозиториев (если применимо) и репозитория. управление.
Поскольку OBS может создавать пакеты не только для openSUSE, но и для дистрибутивов типа Fedora и Debian, вы можете обнаружить, что некоторые из этих пакетов на самом деле недоступны для openSUSE, а доступны только для этих других дистрибутивов. . Кроме того, эти числа учитывают пакет один раз для каждой версии и, вероятно, один раз для каждой архитектуры, а не один раз для всех версий вместе, что немного искажает числа.
В этом свете трудно ответить на вопрос, означает ли это, что у openSUSE действительно больше пакетов, чем в других дистрибутивах. Например, мои способности говорят мне, что Debian Jessie имеет около 67000 доступных пакетов; но это учитывает пакеты только один раз для всех версий, а не один раз для каждой версии для каждого пакета ...
По сути, вы ожидаете, что shell расширит тильду до $HOME
и в начале, и где-то в середине слова, чего не произойдет: первые ~
будут расширены до $HOME
, но не остальные (в данном случае, из-за того, что установлен extendedglob
, они рассматриваются как операторы glob). ..
Как уже отмечалось, есть способы сделать это - даже предложение Sundeep подходит, поскольку zsh
понимает ksh
-подобные глобы (откуда их скопировал bash
):
setopt kshglob
setopt nobareglobqual
print -rl ~/xy?([^z]*)
Вы можете выполнить отрицание:
~/(xy|xy[^z]*)
или короче:
~/xy(|[^z]*)
~
раскрывается только в очень небольшом количестве контекстов .
Здесь вы можете выполнить ~ / xy ^ z *
или ~ / xy (* ~ z *)
.