如何使用 CLI 将 apt-cache 依赖的输出中的包转换为空格分隔的列表,以便与 apt-get 下载一起使用?

如何使用 CLI 将 apt-cache 依赖的输出中的包转换为空格分隔的列表,以便与 apt-get 下载一起使用?

如何使用命令行界面(而不是 GUI)将输出中的依赖包列表转换为apt-cache depends以空格分隔的列表以供使用apt-get download?最好,我希望这两个操作可以通过单个命令执行。

(通过“依赖包列表”,我指的是所有以字符串“ Depends:”为前缀的包。)

用例是将一个包的所有依赖包下载到可以访问互联网的机器上,以便在没有互联网访问的机器上使用,以及如何教自己如何通过命令行重新格式化文本。

一个具有较长依赖项列表的示例涉及命令apt-cache depends gimp,其输出如下所示。(此示例包含多次列出的几个依赖项,但apt-get download显然忽略了重复的条目,因此无需将其过滤掉。)

gimp
  Depends: libgimp2.0
  Depends: libgimp2.0
  Depends: gimp-data
  Depends: gimp-data
  Depends: libgdk-pixbuf2.0-0
  Depends: xdg-utils
  Depends: libaa1
  Depends: libbabl-0.1-0
  Depends: libbz2-1.0
  Depends: libc6
  Depends: libcairo2
  Depends: libfontconfig1
  Depends: libfreetype6
  Depends: libgcc1
  Depends: libgegl-0.4-0
  Depends: libgexiv2-2
  Depends: libglib2.0-0
  Depends: libgs9
  Depends: libgtk2.0-0
  Depends: libgudev-1.0-0
  Depends: libharfbuzz0b
  Depends: libheif1
  Depends: libilmbase23
  Depends: libjpeg8
  Depends: liblcms2-2
  Depends: liblzma5
  Depends: libmng2
  Depends: libmypaint-1.3-0
  Depends: libopenexr23
  Depends: libopenjp2-7
  Depends: libpango-1.0-0
  Depends: libpangocairo-1.0-0
  Depends: libpangoft2-1.0-0
  Depends: libpng16-16
  Depends: libpoppler-glib8
  Depends: librsvg2-2
  Depends: libstdc++6
  Depends: libtiff5
  Depends: libwebp6
  Depends: libwebpdemux2
  Depends: libwebpmux3
  Depends: libwmf0.2-7
  Depends: libx11-6
  Depends: libxcursor1
  Depends: libxext6
  Depends: libxfixes3
  Depends: libxmu6
  Depends: libxpm4
  Depends: zlib1g
  Breaks: gimp-plugin-registry
  Recommends: ghostscript
    ghostscript:i386
 |Suggests: gimp-help-en
  Suggests: <gimp-help>
    gimp-help-ca
    gimp-help-de
    gimp-help-el
    gimp-help-en
    gimp-help-es
    gimp-help-fr
    gimp-help-it
    gimp-help-ja
    gimp-help-ko
    gimp-help-nl
    gimp-help-nn
    gimp-help-pt
    gimp-help-ru
    gimp-help-sl
    gimp-help-sv
  Suggests: gimp-data-extras
  Suggests: gimp-python
  Suggests: gvfs-backends
    gvfs-backends:i386
  Suggests: libasound2
    liboss4-salsa-asound2
  Replaces: gimp-plugin-registry

答案1

我得出的答案是apt-get download $(apt-cache depends gimp | while read line; do grep --only-matching --perl-regexp "(?<= Depends: ).+"; done | tr "\n" " ")使用包gimp作为示例。

解释:

  • apt-cache depends作为子 shell 参数运行apt-get download
  • 在初始子 shell 输出中,使用while循环将输出拆分为分配给变量的行line- 该变量可以命名为任何名称,并且不是必需的 - 使用read命令。
  • 对于每一行输出,使用grep带有 Perl 正则表达式的命令。启用标志--perl-regexp,利用涉及字符串“ Depends:”的正向后视,并且仅使用标志显示匹配的文本--only-matching
  • 最后,使用命令将所有换行符转换为空格字符tr

相关内容