问题是关于apt-cache
之外的命令search regex
。
例如,我知道我可以使用星号字符作为通配符apt-cache policy 'firefox*'
,但我找不到任何有关其他可能的文档。它与文件名扩展相同吗?extglob
是否存在类似 switch 的东西?
我试图解决的实际问题是向apt-cache policy
我展示'firefox*'
除所有-l10n-
软件包之外的所有内容。
答案1
包名称按照文档中的描述进行处理为了apt-get install
(是的,这并不明显):
如果没有包与给定表达式匹配,并且该表达式包含“.”、“?”之一或 '*' 则假定它是 POSIX 正则表达式,并且它应用于数据库中的所有包名称。然后安装(或删除)任何匹配项。请注意,匹配是通过子字符串完成的,因此“lo.*”匹配“how-lo”和“lowest”。如果不希望出现这种情况,请使用“^”或“$”字符锚定正则表达式,或者创建更具体的正则表达式。
严格来说,此检查是在对可用包名称执行 glob 之后进行的 - 因此首先检查包规范是否完全匹配,然后检查 glob 匹配(使用?
和*
),如果没有找到任何内容,则检查包规范包含.
、?
、 或*
,解释为正则表达式。 (您可以通过运行 来查看通配行为apt-cache policy 'firefo?'
,它仅使用通配符进行匹配,然后apt-cache policy 'firefox?'
运行 ,最终使用正则表达式。)
apt-cache policy 'firefox*'
使用 glob 进行匹配。如果你想使用正则表达式强制它匹配,你可以使用类似的东西apt-cache policy 'firefox.*'
;检查mozilla-firefox
输出中的 for 以查看表达式是否作为 glob 或正则表达式匹配。
apt-cache search
被明确记录为处理正则表达式,因为它的参数是总是被视为正则表达式。
鉴于正则表达式支持的类型apt
,排除-l10n-
可能是不可能的;看这个答案了解详情。