Какой глобус соответствует всем ~ / xy *, кроме ~ / xyz *?

Во-первых, это не «Open Build Studio», это « Open Build Service ».

OBS - это система, позволяющая перейти от метаданных источника и упаковки для любого дистрибутива к репозиториям с готовыми пакетами для (различных версий) этих дистрибутивов. Это позволяет упаковщикам загружать исходный код и быть уверенным, что загруженный исходный код будет скомпилирован в чистой и в некоторой степени воспроизводимой среде, чтобы их пользователи могли установить то, что они хотели установить.

Он делает это путем автоматизации большей части процесса - создания chroot сборки, выполнения фактической компиляции, подписания полученных пакетов (если применимо), их копирования в нужные репозитории, подписания репозиториев (если применимо) и репозитория. управление.

Поскольку OBS может создавать пакеты не только для openSUSE, но и для дистрибутивов типа Fedora и Debian, вы можете обнаружить, что некоторые из этих пакетов на самом деле недоступны для openSUSE, а доступны только для этих других дистрибутивов. . Кроме того, эти числа учитывают пакет один раз для каждой версии и, вероятно, один раз для каждой архитектуры, а не один раз для всех версий вместе, что немного искажает числа.

В этом свете трудно ответить на вопрос, означает ли это, что у openSUSE действительно больше пакетов, чем в других дистрибутивах. Например, мои способности говорят мне, что Debian Jessie имеет около 67000 доступных пакетов; но это учитывает пакеты только один раз для всех версий, а не один раз для каждой версии для каждого пакета ...

3
24.02.2017, 16:57
3 ответа

По сути, вы ожидаете, что shell расширит тильду до $HOME и в начале, и где-то в середине слова, чего не произойдет: первые ~ будут расширены до $HOME, но не остальные (в данном случае, из-за того, что установлен extendedglob, они рассматриваются как операторы glob). ..
Как уже отмечалось, есть способы сделать это - даже предложение Sundeep подходит, поскольку zsh понимает ksh-подобные глобы (откуда их скопировал bash):

setopt kshglob
setopt nobareglobqual
print -rl ~/xy?([^z]*)
2
27.01.2020, 21:12

Вы можете выполнить отрицание:

~/(xy|xy[^z]*)

или короче:

~/xy(|[^z]*)
2
27.01.2020, 21:12

~ раскрывается только в очень небольшом количестве контекстов .

Здесь вы можете выполнить ~ / xy ^ z * или ~ / xy (* ~ z *) .

3
27.01.2020, 21:12

Теги

Похожие вопросы