如何解压 STDIN?

如何解压 STDIN?

我已尝试过:

  1. cat archive.rar | unrar x -
  2. cat archive.rar | unrar x /dev/stdin
  3. cat archive.rar | 7z x -
  4. cat archive.rar | 7z x -si
  5. cat archive.rar | 7z l -si

无法unrar识别-文件名,并Seek error in the file /dev/stdin提示/dev/stdin

7z投诉Error: : E_NOTIMPL

那么,这可能吗?还有其他工具可以从其他程序的 STDOUT 读取 RAR 档案吗?

(注:当然,cat这里只是举个例子,档案文件实际上可以用wget或类似的东西来检索,但它们不是本地的。)

答案1

像 FIFO(先进先出)流/dev/stdin是不可查找的,这显然是unrar7z需要能够处理文件的原因(不同于例如targzip两者都可以使用流)。

如果使用 RAR 格式和从标准输出进行流式传输对您来说都很重要,我会首先研究 RAR 格式是否可以与流一起使用。

否则,为了解决这个问题,您可以编写如下脚本:

#!/bin/bash
cat /dev/stdin > tmp.rar
unrar x tmp.rar
rm tmp.rar

然后像这样运行它:cat archive.rar | ./script.sh

答案2

如果您的存档包含视频文件,您可以使用 VLC 即时解压。例如,我设法通过 http: 解压了一个 rar 存档

vlc -I dummy http://www.example.com/archive.rar --sout="#duplicate{dst=std{access=file,mux=mp4,dst='file.mp4'}}"

相关内容