Ben*_*rel 93 shell tar pipe wget
我想下载并解压缩给定目录下的存档。到目前为止,这是我的做法:
wget http://downloads.mysql.com/source/dbt2-0.37.50.3.tar.gz
tar zxf dbt2-0.37.50.3.tar.gz
mv dbt2-0.37.50.3 dbt2
Run Code Online (Sandbox Code Playgroud)
我想即时下载和解压缩存档,而无需将其tar.gz写入磁盘。我认为通过管道输出wgettotar并给出tar目标是可能的,但实际上我不知道如何将这些部分放在一起。
Jos*_* R. 126
您可以通过告诉wget将其有效负载输出到 stdout(带有 flag -O-)并抑制其自己的输出(带有 flag -q)来实现:
wget -qO- your_link_here | tar xvz -
Run Code Online (Sandbox Code Playgroud)
要指定目标目录:
wget -qO- your_link_here | tar xvz - -C /target/directory
Run Code Online (Sandbox Code Playgroud)
更新
如果你碰巧有 GNU tar
wget -qO- your_link_here | tar --transform 's/^dbt2-0.37.50.3/dbt2/' -xvz
Run Code Online (Sandbox Code Playgroud)
应该允许您一步完成所有操作。
-q 安静的
-O - 输出到标准输出
Zle*_*ni 26
另一种选择是curl默认使用which 写入标准输出:
curl -s some_url | tar xvz -C /tmp
Run Code Online (Sandbox Code Playgroud)
小智 12
这个oneliner可以解决问题:
tar xvzf -C /tmp/ < <(wget -q -O - http://foo.com/myfile.tar.gz)
Run Code Online (Sandbox Code Playgroud)
简短说明:括号中的右侧首先执行(-q告诉 wget 安静地执行,-O -用于将输出写入 stdout)。
然后我们使用 Bash 中的进程替换运算符<(创建一个命名管道来创建一个命名管道。通过这种方式,我们创建了一个临时文件描述符,然后使用<文件重定向运算符将该描述符的内容定向到 tar 。
| 归档时间: |
|
| 查看次数: |
92535 次 |
| 最近记录: |