gpt4 book ai didi

Linux 管道查看器,如何拆分管道

转载 作者:行者123 更新时间:2023-12-01 09:20:36 26 4
gpt4 key购买 nike

我正在尝试使用 pv 提取大型 .tar 文件。

pv large_file.tar.gz | tar -xcf /../MyFolder.

pv 命令按预期工作,在控制台中显示进度。

我正在尝试拆分标准输出,以在控制台中显示进度并将相同的突出显示保存到文件中。

我试着用 tee 这样做,但不能让它工作。
pv large_file.tar.gz | tee /tmp/strout.log | tar -xcf /../MyFolder

有什么建议我如何将进度显示到控制台并同时将其保存到文件中?

谢谢!

最佳答案

不确定您的原始命令是否有效,因为提供给 tar 的选项中有几个错误。

鉴于 ../MyFolder存在,你的第一个命令需要是

    pv large_file.tar.gz | tar -xz -C ../MyFolder

如果您在 pv 之间插入发球台调用和 tar调用,然后整个链工作。

    pv large_file.tar.gz | tee /tmp/strout.log | tar -xz -C ../MyFolder

但是,我不确定它是否符合您的预期。如果您将 pv 输出通过管道传输到 tee,tee 会将其通过管道传输到 tar,并将与原始 tar 相同的内容转储到/tmp/strout.log,从而将您的 tar 提取到 ../MyFolder并复制到/tmp/strout.log。

编辑
正如@DownloadPizza 所建议的,您可以使用进程替换(请参阅 How do I write stderr to a file while using "tee" with a pipe? )。通过使用 -f用 pv 标记,您的命令将变为

    pv -f large_file.tar.gz 2> >(tee /tmp/strout.log) > >(tar -xz -C ../MyFolder)

并将产生预期的输出。

关于Linux 管道查看器,如何拆分管道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60314965/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com