如何使用命令行界面(不是 GUI)将输出中的依赖包列表转换apt-cache depends
为以空格分隔的列表以供使用apt-get download
?最好,我希望这两个动作可以通过一个命令来执行。
(通过“依赖包列表”,我指的是所有以字符串“ Depends:
”为前缀的包。)
用例是将包的所有依赖包下载到可以访问 Internet 的机器上,以便在没有 Internet 访问权限的机器上使用,以及自学如何通过命令行重新格式化文本。
一个具有一长串依赖关系的示例涉及 command 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
我得到的答案是以
apt-get download $(apt-cache depends gimp | while read line; do grep --only-matching --perl-regexp "(?<= Depends: ).+"; done | tr "\n" " ")
包gimp
为例。解释:
apt-cache depends
_apt-get download
while
循环将输出拆分为分配给变量的行(line
可以命名任何内容,否则不需要),使用read
命令。grep
带有 Perl 正则表达式的命令。使用 flag 启用--perl-regexp
,它利用包含字符串“ ”的正向回溯Depends:
,并且仅使用 flag 显示匹配的文本--only-matching
。tr
最后,使用该命令将所有换行符转换为空格字符。