重定向到 pv 实际上是如何工作的?

重定向到 pv 实际上是如何工作的?

我想了解重定向是如何工作的这个命令

# tar -czf - ./Downloads/ | (pv -p --timer --rate --bytes > backup.tgz)

英文翻译是什么?

的所有数据都tar被重定向为输入pv,然后pv将其重定向到backup.tgz?

那么为什么周围需要括号呢pv

那么这个重定向有什么意义呢?

tar -czf - ./Documents/ | (pv -n > backup.tgz) 2>&1 | dialog --gauge "Progress" 10 70

之后pv是什么意思2>&1

答案1

shell 的控制和重定向运算符是什么?重定向顺序为背景。

tar -czf - ./Downloads/ | (pv -p --timer --rate --bytes > backup.tgz)

告诉 shelltar -czf - ./Downloads/以重定向到的标准输出运行(pv -p --timer --rate --bytes > backup.tgz)

(pv -p --timer --rate --bytes > backup.tgz)

告诉 shellpv -p --timer --rate --bytes以连接到管道的标准输入运行tar,并将标准输出重定向到backup.tgz。由于tar被告知创建一个压缩存档并输出到其标准输出 ( ),因此总体效果f -是构建一个压缩存档,将其通过管道传输pv,然后将pv其写入到backup.tgzpv显示一个进度条,随着数据流过它而更新。

括号不是必需的。

第二个命令更改第一个管道的后半部分:

(pv -n > backup.tgz) 2>&1

再次写入backup.tgz,但也将子 shell 的(由括号引入的)标准错误重定向到标准输出,并提供其中dialog产生自己的进度显示。

如果按照命令中给出的顺序设置重定向,则此处需要括号:pv -n > backup.tgz 2>&1会将pv的标准输出和标准错误重定向到backup.tgz,这不是您想要的。首先重定向标准错误也可以达到预期的效果:pv -n 2>&1 > backup.tgz

相关内容