如何获取包含 apt-get autoremove 选择的软件包的列表?

Afo*_*usa 20 package-management apt bash scripts text-processing

是否有任何命令只打印apt-get autoremove选择的包的名称?我正在创建一个脚本来更新内核、删除旧内核和不必要的包 ( apt-get autoremove),但我想在屏幕上打印将由 删除的包列表,apt-get autoremove我该怎么做?

kos*_*kos 22

由于根据您的评论,您只想列出将要删除的软件包:

apt-get --dry-run autoremove | grep -Po '^Remv \K[^ ]+'
Run Code Online (Sandbox Code Playgroud)

grep 命令分解:

  • -P:将给定的模式解释为 PCRE(Perl 兼容正则表达式)模式
  • -o: 只打印匹配的字符串而不是整行

正则表达式细分:

  • ^: 匹配行的开头
  • Remv: 匹配一个Remv字符串
  • \K: 从匹配的字符串中排除先前匹配的子字符串
  • [^ ]+: 不匹配一个或多个字符
$ apt-get --dry-run autoremove | grep -Po 'Remv \K[^ ]+'
libapache2-mod-php5
php5-readline
php5-cli
libonig2
libqdbm14
php5-json
php5-common 
Run Code Online (Sandbox Code Playgroud)

  • @GeekLynxAfonso,您不需要将“sudo”与“--dry-run”选项一起使用。 (2认同)

lem*_*ice 5

实际上你只需要过滤你的输出

sudo apt-get autoremove --dry-run 
Run Code Online (Sandbox Code Playgroud)

命令。

例如你可以这样做

sudo apt-get autoremove --dry-run  | head -n 5 | tail -n 1
Run Code Online (Sandbox Code Playgroud)