如何巧妙地使用通配符?


Answers:


16

http://ubuntuforums.org/showthread.php?t=228309表示可以通过诸如此类进行构建~n<package name>,这已通过用户手册http://algebraicthunk.net/~dburrows/projects/aptitude/doc/en/确认。ch02s03s02.html

~nin ~n<package name>是用于匹配软件包名称的搜索模式。除软件包名称外,还可以匹配其他字段,请参见http://algebraicthunk.net/~dburrows/projects/aptitude/doc/en/ch02s03s05.html#tableSearchTermQuickGuide

这是一个例子。假设您要aptitude显示每个名称中带有“ redshift”的软件包,然后发出

aptitude show ~nredshift

它应该与其他功能选项(例如安装和删除)相结合,例如,以您发出的名称删除所有带有openoffice的已安装软件包

sudo aptitude -P remove ~nopenoffice

-P在使用搜索模式来强制能力来在下载,安装或删除软件包之前显示提示时,请确保使用该选项(搜索模式可能有很多匹配项,并且您希望在执行操作前得到提示)。

我还没有解决的一件事是如何获得通配符的确切功能,例如,它openoffice*匹配 “ openoffice” 开头的每个字符串(~nopenoffice匹配包含 “ openoffice”的任何字符串)。也许可以采取一种解决方法,例如搜索名称中带有特定字符串的已安装软件包,然后使用其名称来查找合适的软件包。


-P表示从不跟随符号链接,而不是提示
rancho

同样使用〜nredshift不会搜索redshift,而是〜nredshift。同样
rancho

NorticUs给出的答案是正确的。正确的语法是
〜n

5

您只需将其用引号引起来:

sudo apt-get remove "openoffice*"

否则,shell会尝试将其与当前工作目录的文件匹配。


5
问题是关于aptitude而不是apt-get。此解决方案不适用于智能解决方案。
NN

@MichałŠrajer:单引号和双引号都没有路径名扩展
enzotib 2011年

@enzotib:我的错。感谢您指出。已删除评论。
米哈尔Šrajer

好的,我不知道...所以可以使用aptitude或以这种方式完成... sudo aptitude删除“ openoffice *”
raulricardo21 2011年

@ raulricardo21可以用类似的方法完成类似的操作,请参阅我的回答
NN

4

要匹配以程序包名称开头的字符串,请^在其前面加上a 。
例如:aptitude search ~n^openoffice


我只是搜索部分,您还应该提及如何获取搜索结果
rancho
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.