如果我有文件的 URL,如何直接从终端解压缩?
例如 :
unzip www.test.com/test.zip destination-folder-on-my-pc
答案1
如果unzip
坚持管道和过滤器架构风格Unix 的特性,那么人们期望能够通过将 wget 的输出通过管道传输到 unzip 的输入中来实现这一点:
wget -O - http://www.test.com/test.zip | (cd destination-folder && unzip -)
其中,后面的破折号-O
表示标准输出,后面的破折号unzip
表示标准输入,右边的括号表示在正确的目录中启动一个子 shell。
但是 ZIP 格式将其内容索引存储在文件末尾,unzip
需要先读取该索引才能开始解压。因此,与gzip
et al 相反,它无法一次性解压一个流。
作为一种解决方法,您需要一个临时文件:
wget -O /tmp/z.$$ http://www.test.com/test.zip &&
(cd destination-folder && unzip /tmp/z.$$)
其中它们$$
仅用于生成非冲突的数字。
您可以使用 unzip 选项,而不是运行子 shell -d
。为了更加安全,请清理临时文件:
wget -O /tmp/z.$$ http://www.test.com/test.zip &&
unzip -d destination-folder /tmp/z.$$ &&
rm /tmp/z.$$
答案2
您需要多个步骤:
进入目标文件夹
cd destination
下载文件
wget www.test.com/test.zip
提取文件
unzip test.zip
要仅使用一个命令,请使用脚本:
#!/bin/bash
wget -P "/tmp" "$1"
filename=$(awk -F'/' {print $NF})
unzip "$filename" -d "$2"
rm "/tmp/$filename"
打开编辑器创建一个名为的新文件
unzip_by_url
,并将其放入~/bin
或/usr/bin/local
nano unzip_by_url
并粘贴上面的代码。
保存并关闭
使文件可执行
chmod +x /path/to/file/unzip_by_url
现在使用以下命令启动脚本:
unzip_by_url www.test.com/test.zip destination-folder-on-my-pc