缺省情况下,搜索查询是一组要精确匹配但不区分大小写的词条。可使用 -I 选项指定区分大小写的搜索。
在查询词条中可使用 ? 和 * 通配符。可使用单引号或双引号搜索短语。当使用通配符或引号时,请务必考虑所用的 shell。
可以指定多个查询词条。缺省情况下,多个词条以 AND 连接。可以使用 OR 显式连接两个词条。
可以用以下结构化形式表达搜索查询:
package:action:index:token
要搜索的软件包的名称或可以与多个软件包匹配的模式。
pkg(5) 手册页的“操作”部分中列出的操作名称。
pkg(5) 手册页的“操作”部分中列出的 action 属性的名称。
index 的值或可以与 index 值匹配的模式。
对缺少的字段使用隐式通配符。
并非所有属性都是可搜索的。例如,mode 是 file 操作的一个属性,但是 mode 不是 index 的有效值。
index 的某些值是从其他属性派生的值。例如,index 可以是 basename,它是 file 或 dir 操作的 path 属性的最后一个组成部分。有用的 index 值的示例包括:对应于 file 和 dir 操作的 basename 和 path、对应于 depend 操作的依赖关系类型(例如 require 或 group),以及对应于 driver 操作的 driver_name 和 alias。
将 token 的值和由 index 指定的属性的值进行对比。例如,在下面的部分 driver 操作中,可以为 index 指定属性名称 alias,可以为 token 指定 pci108e*。
driver alias=pci108e,1647 alias=pci108e,16a7
set 操作的语法稍有不同。set 操作的两个属性为 name 和 value。在这种情况下,index 的值是 name 属性的值,并且会将 token 的值与匹配的 value 属性的值进行比较。以下示例显示了针对驱动程序软件包的不完整 set 操作:
set name=pkg.summary value="Broadcom NetXtreme II 10GbE NIC Driver"
以下示例针对 action 指定了 set,针对 index 指定了 pkg.summary,针对 token 指定了 Broadcom。search.match 和 pkg.name 列说明符是伪属性。请参见 pkg(1) 手册页。
$ pkg search -o search.match,pkg.name pkg.summary:Broadcom SEARCH.MATCH PKG.NAME Broadcom NetXtreme II 10GbE NIC Driver driver/network/ethernet/bnxe Broadcom 57xx 1GbE NIC Driver driver/network/ethernet/bge Broadcom NetXtreme II 1GbE NIC Driver driver/network/ethernet/bnx Broadcom BCM4401 NIC Driver driver/network/ethernet/bfe Broadcom HT1000 SATA driver driver/storage/bcm_sata
set 操作 name 属性的一些明确定义的值包括 pkg.fmri、info.classification、pkg.description 和 pkg.summary。请参见 pkg(5) 手册页中的 "Set Actions"(Set 操作)。
缺省情况下,仅显示匹配的当前安装的软件包版本或新软件包版本。可使用 -f 选项显示所有匹配的版本。
缺省情况下,将显示所有匹配操作的结果,这样一个软件包可产生多行结果。可使用 -p 选项使每个匹配的软件包只列出一次。