出处 http://moto.debian.tw/viewtopic.php?f=15&t=4912

http://hi.baidu.com/sxpspace/item/f30d3bea24dd250b560f1d93


搜尋樣式(Search Pattern)

當你搜尋一個套件,或在 aptitude 中設定一個顯示限制(Display
Limit),你所輸入的字串就被認為是一個搜尋樣式(Search Pattern)。
雖然搜尋樣式最為基本的使用方式就是去符合套件名稱,但
aptitude 允許你做更為複雜的搜尋。

一個搜尋樣式由一個或更多條件(有時候被稱為「terms」)組成;也
就是說,套件符合了該樣式,也就符合了所有的 terms。Terms 通常
以 ~ 為開頭,並跟隨著一個用來判別 term 類型的字元,然後緊接
著該 term 需要的其他文字。

大部份的文字搜尋(像是套件名稱、描述(descriptions)等等)使用
無關呼大小寫的正規表示式(regular expressions)。這代表你必須
在搜尋中以反斜線來防止正規表示示的特殊字元做特殊解釋(如,要
找「g++」,你應該用「g\+\+」作為搜尋樣式)。

下面列出可使用的 terms 類型:

 name
  符合此正規表示式的套件名稱。這是「預設」的搜尋模
  式,而且不需要以 ~ 字元為開頭。

   [注]

        要比對包含多個不同子字串的套件,可以用 ~n 比對
        (下面將會談到);例如,「~napti~tude」


 !term
  不符合此 term 的套件。例如,「!~b」會找出沒有
  「broken」的套件。

   [注]

        要在正規表示式中使用「!」字元,必須要「跳脫」
        來防止 aptitude 將他解讀為 NOT term:「~!」。


 term1 | term2
  符合 term1 或 term2 的套件。

   [注]

        要在正規表示式中使用「!」字元,必須要「跳脫」
        來防止 aptitude 以為他是 OR term:「~|」


 (term)
  符合 term 的套件;這對於指定複雜的分類表示式是很
  有用的。舉例來說,「~D(perl|python)」會找出任何相依
  於名稱中有 perl 或 python 的套件的套件。


 ~Aarchive
  符合那些可由 archive 中取得的套件,其中 archive
  可用正規表示式。例如,「~Atesting」會找出任何可由
  testing archive 取得的套件。


 ~Btype
  符合並未滿足某類(type)相依性(「broken」)的套件。
  type 可是是「depends」、「predepends」、「recommends」
       、「suggests」、「conflicts」,或「replaces」。



 ~b
  符合「broken」的套件;他們未滿足相依性(dependency)、
  predependency、或衝突(conflicts)


 ~Cterm
  符合那些與 term 符合的套件相衝突的套件。例如,
  「~C~mburrows@debian.org」 會找出任何與我維護的套件
  相衝突的套件。


 ~c
  符合已被移除的套件,除了那些還保留著設定檔的(也就是,
  被 remove 但沒有被 purge)


 ~D[type:]term
  type 可能是「provides」或是其他上述 ~B 所說明的相依
  性類型之一。如果沒有指定 type,預設會是 depends。

  如果 type 是「provides」,就會符合那些 provide 符合
  term 的套件(等同於 ~P)。否則,將會符合那些 type 類
  型相依性符合該 term 的套件。


 ~ddescription
  符合那些套件,看誰的 description 符合該正規表示式
  description。


 ~E
  符合那些必要的套件。


 ~F
  這個 term 不會符合任何套件(「F」 意味著 「false」)。


 ~g
  符合那些沒被安裝套件,或被自動安裝但沒被任何已安裝套
  件相依的套件。


 ~i
  符合當前已安裝的套件。


 ~M
  符合被自動安裝的套件。


 ~mmaintainer
  符合那些 Maintainer 欄位符合該正規表示式 maintainer
  的套件。例如,「~mjoeyh」將會找出所有被 Joey Hess 維
  護的套件。


 ~N
  符合那些「新」套件。


 ~nname
  符合那些名稱符合該正規表示式 name 的套件。例如,大多
  符合「~n^lib」的套件就是這個樣子的函式庫。


 ~Oorigin
  符合那些來源(origin)符合該正規表示式 origin的套件。
  例如,「!~ Odebian」將會找出你電腦所有非官方的套件
  (也就是不是從 Debian 套件庫取得的套件)。


 ~Pterm
  找出那些 provide 中符合 term 的套件。例如,「~
  Pmail-transport-agent」會符合所有 provide
  「mail-transport-agent」的套件。


 ~ppriority
  符合那些優先權(priority)為 priority 的套件;priority
  必須是 extra、important、optional、required,或
  standard。例如,「~prequired」符合所有優先權為
  「required」的套件。


 ~R[type:]term
  type 可能是 「provides」或是任何在文件中的 ~B 所提及
  的相依性類型。如果沒有指定 type,預設上他會是
  depends。


 ~ssection
  符合那些 section 符合該正規表示式 section 的套件。


 ~T
  這個 term 符合任何套件。例如,「~i~P~T」會符合所有已
  安裝且被 provide 的套件。


 ~U
  這個 term 符合所有可升級的已安裝套件。


 ~Vversion
  符合那些版本(version)符合該正規表示式 version 的套件。
  例如,「~Vdebian」會符合那些版本含有「debian」的套件。


 ~v
  符合任何純 virtual 的套件;也就是說,他的名字由一個
  套件 provide,或在相依性中提到,但沒有那個名稱的套件。
  例如,「~v!~P~T」 符合所有為 virtual 而且沒被任何套
  件 provide;即,套件被相依但不存在。


aptitude Search Patterns 2


完×××式                            简写

name
匹配那些软件包名称 Package 符合正则表达式 name 的软件包。这是默认搜寻模式,当 pattern 不以 ~ 开始时就用这种模式。
注:为了匹配包含多个子串的名字,请使用 ?name pattern。例如,name(apti)?name(tude) 将匹配名字包括 apti 和 tude 的软件包。

?=variable
匹配 variable 变量指定的软件包,它必需用封闭的 ?for 来绑定。例如,?for x: ?depends(?recommends(?=x)) 将匹配依赖于另一个软件包 y 并且软件包 y 又推荐自己 x 的软件包 x。

?not(pattern)                        !pattern
匹配不符合 pattern 的软件包。例如,“?not(?broken)” 选择没有 broken 的软件包。
注:要在正则表示式中使用 ! 字元,必须要 escape 来防止aptitude将他解读为 NOT pattern :~a!。例如,为了选择描述中包含 extra! 的软件包,请用'?description(extra~!)'。

?action(action)                     ~aaction
匹配将要执行指定 action 的软件包。动作可以是 install、upgrade、downgrade、remove、purge、hold(验证是否包被设置为 hold 状态),或是是 keep(验证是否被设置为 keep 状态)。
值得注意的是它只会验证一个 action 是否真的在执行队列中排队,而不是是否真被执行。因此,例如,?action(upgrade) 匹配那些你已经决定去升级的包,而不是将来可以升级的包(这种情况要用 ?upgradable)。

?all-versions(pattern)
匹配软件版本 Version 符合正则表达式的软件包。软件包的每个版本都依据 pattern 分别进行验证,只有所有的版本都符合的软件包才被匹配。没有版本的软件包,如虚拟软件包在这个 pattern 下总是匹配的。
这个 pattern 不能在版本匹配已经被限制了的环境中使用,例如在 ?depends 或者 ?narrow中。但是它可以在 ?widen 中使用。

?and(pattern1, pattern2)             pattern1 pattern2
匹配 pattern1 和 pattern2 的软件包。

?any-version(pattern)
匹配软件版本 Version 其中的任何一个符合 pattern 的软件包。它和 ?all-version 是一对。
这个 pattern 不能在版本匹配已经被限制了的环境中使用,例如在 ?depends 或者 ?narrow中。但是它可以在 ?widen 中使用。
注:这个 pattern 和 ?narrow 密切相关。事实上,?any-version(pattern1 pattern2)和?narrow(pattern1, pattern2)是完全相同的。

?archive(archive)                     ~Aarchive
匹配那些可从 archive 中取得的软件包,其中 archive 可用正则表示式。例如, ~Atesting 会找出任何可由 testingarchive 取得的软件包。

?automatic                            ~M
匹配符合被自动安装的软件包。

?bind(variable, pattern)            ?variable: pattern-name[(args)]
匹配返回 pattern 符合绑定到 variable 的软件包或版本的软件包或版本,variable 必需用封闭的 ?for 来绑定。如,?for x: ?depends(?depends(?for z: ?x:depends(?=z))) 匹配依赖于软件包 y 而软件包 y 又依赖于软件包 z 的软件包 x ,因此软件包 x 也依赖于软件包 z 。

?broken                                ~b
匹配 broken 的软件包;他们未满足依赖(dependency)、predependency、或冲突(conflicts)

?broken-depType                   ~BdepType
匹配未满足某类 type 依赖关系的软件包。type可是是depends、predepends、recommends、suggests、conflicts ,或 replaces 。
译者注:匹配的是依赖于自己的软件列表。

?broken-depType(pattern)         ~DB[depType:]pattern
匹配末满足某类 type 类型依赖关系的 Package 符合 pattern 的软件包。type 可以是任何在 ?broken-depType 文档中列出的依赖类型。


?broken-reverse-depType(pattern)    ~RBdepType:pattern
type 可以是 provides 或任何在 ?broken-depType 文档中列出的依赖类型。如果 type 不存在,默认是 depends。
匹配末满足某类 type 类型依赖关系的 Package 符合 pattern 的软件包。
译者注:匹配的是自己依赖的软件列表。  

?conflicts(pattern)                 ~Cpattern
匹配那些 Conflicts 与符合 pattern 的软件包相冲突的软件包。例如,~C~mburrows@debian.org 会找出任何与我维护的软件包相冲突的软件包。

?config-files                          ~c
匹配已被移除的软件包,除了那些还保留着设定档的(也就是,被 remove 但没有被 purge)

?depType(pattern)                  ~D[depType:]pattern
type 可能是 provides 或是其他上述 ?broken-depType 所说明的依赖关系类型之一。例如,?depends(libpng3) 匹配依赖 libpng3 的软件包。如果使用简写形式(~D)并且 depType 没有定义,预设会是 depends。
如果 type 是 provides ,就会匹配那些 provides 符合 pattern 的软件包(等同于 ?provides)。否则,将会匹配那些 type 类型依赖关系并符合该 pattern 的软件包。
译者注:简单的说,当 type 不是 provides 时,匹配的是依赖于自己的软件列表。

?description(description)         ~ddescription
匹配那些 Description 符合 pattern 的软件包。

?essential                               ~E
匹配那些 Essential 的软件包。

?false                                      ~F
这个 pattern 不会符合任何软件包(F 意味着 false)。

?for variable: pattern
匹配 pattern,但是给定变量可以在里面的 pattern 中来表示软件包或版本号。
有两种方式使用变量。一种是使用 ?=样式的变量 pattern,另一种是使用?variable:term-name(args);例如,?x:depends(apt)。除此之外,?=variable 将选出匹配 variable 值的软件包或版本号。
例如,?for x: ?depends(?for y: ?x:recommends(?=y))将匹配即依赖又推荐软件包 y 的软件包 x。

?garbage                                  ~g
匹配那些没被安装软件包,或被自动安装但没被任何已安装软件包依赖的软件包。

?installed                                  ~i
匹配当前已安装的软件包。
因为默认验证所有的版本,所以通常匹配当前系统中已经安装的软件包。

?maintainer(maintainer)               ~mmaintainer
匹配 Maintainer 栏位符合该正则表示式 maintainer 的软件包。
例: ~mjoeyh 将会找出所有被JoeyHess维护的软件包。

#?narrow(filter, pattern)               ~S filter pattern
#  This term “narrows” the search to package versions matching filter. In particular, it matches any package version which matches both filter and pattern. The string value of the match is the string value of pattern.
#  这个 pattern 用软件包版本匹配条件来限制匹配过程。更明确地说,它匹配 filter 和 pattern 的任何版本号。pattern 的字串值即匹配字串的值。

?name(name)                            ~nname, name
匹配那些名称 Name 符合正则表示式 name 的软件包。例如,大多符合 ~n^lib 的软件包就是这个样子的函式库。

?new                                        ~N
匹配那些新软件包,也就是说,这些软件包是自从上次软件清单用 Actions → Forget new packages (f) 或 命令行 action forget-new 清除后加进软件仓库的。

?obsolete                                   ~o
匹配任何版本都已经不在任何软件仓库的已经安装的软件包。这些包在可视界面中在"Obsolete or Locally Installed"中。

?or(pattern1, pattern2)                pattern1 | pattern2
匹配 pattern1 或 pattern2 的软件包。
注:要在正则表示式中使用 ! 字元,必须要 escape 来防止 aptitude 以为他是 OR pattern : ~|

?origin(origin)                             ~Oorigin
匹配那些来源 Origin 符合该正则表示式 origin 的软件包。例:!~Odebian 将会找出你电脑所有非官方的软件包(也就是不是从 Debian 软件包库取得的软件包)。

?provides(pattern)                        ~Ppattern
匹配那些 Provide 中符合 pattern 的软件包。例:~Pmail-transport-agent 会符合所有 provide mail-transport-agent 的软件包。

?priority(priority)                            ~ppriority
匹配那些优先权 Priority 为 priority 的软件包;priority 必须是extra、important、optional、required,或 standard。例:~prequired 符合所有优先权为 required 的软件包。

?reverse-depType(pattern)               ~R[depType:]pattern
type 可能是 provides 或是其他上述 ?broken-depType 所说明的依赖关系类型之一。如果 type 没有定义,预设会是 depends。
如果 type 是 provides ,就会匹配那些 name 符合 pattern 的软件包。否则,将会匹配那些符合 pattern 的软件包的 type 类型依赖关系。
译者注:简单的说,当 type 不是 provides 时,匹配的是自己依赖的软件列表。

?reverse-broken-depType(pattern)    ~RBdepType:pattern
与 ?broken-reverse-depType(pattern) 一样。

?section(section)                             ~ssection
匹配那些 section 符合该正则表示式 section 的软件包。

?source-package(name)
匹配源码包名称符合正则表达式的软件包。

?source-version(version)
匹配源码包版本符合正则表达式的软件包。

?tag(tag)                            ~Gtag
匹配 tag 域符合正则表达式的软件包。例如,pattern ?tag(game::strategy) 匹配策略游戏。

?true                                  ~T
这个 pattern 符合任何软件包。例如,~i~P~T 会符合所有已安装且被 provide 的软件包。

?task(task)                         ~ttask
匹配那些在 task 名称符合 正则表达式的软件包。

?upgradable                         ~U
这个 pattern 匹配所有可升级的已安装软件包。

?user-tag
匹配 user-tag 符合正则表达多的软件包。

?version(version)                    ~Vversion
匹配那些 version 符合该正则表示式 version 的软件包。例:~Vdebian 会符合那些版本含有 debian 的软件包。
下面这些值要特殊对待。搜寻版本号包含下面这些值时,前面要用反划线。例如,搜寻版本包含 CURRENT,要用 \CURRENT。
* CURRENT 匹配当前安装的版本,如果有的话。
* CANDIDATE 匹配侯选版本。如果有的话,在软件包上标记上 + 或者用 aptitude install 用来安装的话,这个软件包将会被装上。
* TARGET 匹配目标版本。如果有的话,该软件包就是当前安装的目标。

?virtual                            ~v
匹配任何纯 virtual 的软件包;也就是说,他的名字由一个软件包 provide,或在依赖关系中提到,但没有那个名称的软件包。例如:~v!~P~T 符合所有为 virtual 而且没被任何软件包 provide;即,软件包被依赖但不存在。

#?widen(pattern)                ~Wpattern
#  “Widens” the match: if the versions to match against have been limited by an enclosing term (such as ?depends), these limits are dropped. Thus, ?widen(pattern) matches a package version if pattern matches any version of that package.
#  扩展匹配:如果要匹配的版本被包含的 pattern (例如:?depends)限制了,这些限制就要被舍弃。因此,如果 pattern 没有匹配到软件包任何版本的话,?widen(pattern) 就可以匹配一个版本。

PS:#号的注释掉了,不懂。


参考:http://moto.debian.org.tw/viewtopic.php?f=15&t=4912