aptitude 如何使用通配符?

rau*_*o21 23 aptitude command-line

有没有办法aptitude在以下情况下使用通配符:

sudo apt-get remove openoffice*.*
Run Code Online (Sandbox Code Playgroud)

N.N*_*.N. 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
Run Code Online (Sandbox Code Playgroud)

它也应该与其他 aptitude 选项结合使用,例如安装和删除,例如删除所有已安装的软件包,其中包含您发布的名称中的 openoffice

sudo aptitude -P remove ~nopenoffice
Run Code Online (Sandbox Code Playgroud)

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

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


aqu*_*erd 6

你只需把它放在引号中:

sudo apt-get remove "openoffice*"
Run Code Online (Sandbox Code Playgroud)

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

  • 问题是关于 `aptitude` 而不是 `apt-get`。此解决方案不适用于 aptitude。 (5认同)

小智 5

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