如何通过 tar 传输使用 wget 下载的文件?

Jos*_*nto 2 tar pipe shell-script wget

我想通过管道.tar.gz传输我用 GNU Wget ( wget)下载的tarball(在这种情况下是文件)tar -xzf(解压缩它们,如果不清楚的话)但我不知道如何。我试过了:

wget -q -O- ${SRC_URI} | tar -xzf > ${DESTDIR}
Run Code Online (Sandbox Code Playgroud)

wget -q -O- ${SRC_URI} | `tar -xzf` > ${DESTDIR}
Run Code Online (Sandbox Code Playgroud)

wget -q -O- ${SRC_URI} | 'tar -xzf' > ${DESTDIR}
Run Code Online (Sandbox Code Playgroud)

甚至没有人接近做我想做的事。我也尝试过省略输出组件> ${DESTDIR},只让 tar 以默认方式提取 tarball 的内容。每次尝试通常都会返回如下错误:

tar: option requires an argument -- 'f'
Run Code Online (Sandbox Code Playgroud)

在它下载tarball之前,或者什么都不下载,然后我会检查是否${DESTDIR}已经创建了设置的路径(因为我正在离开tar来生成它)并且它没有。

cas*_*cas 5

当您从标准输入中提取 tar.gz 文件时,您不需要指定f选项,tar默认为从标准输入读取。

假设您要将内容提取到 $DESTDIR,您还需要使用 GNUtar-C(更改目录)选项。

我也把"引号中的变量,如果$ SRC_URI或$ DESTDIR包含任何空格或shell元字符- ,,等。&*?

最后,{}变量周围的花括号在这里并不是绝对必要的,但无论如何我都保留了它们——它们当然不会造成任何伤害。

把所有这些放在一起,你得到:

wget -q -O- "${SRC_URI}" | tar -xz -C "${DESTDIR}"
Run Code Online (Sandbox Code Playgroud)