普通的tar命令
tar cvf foo.tar ./foo >foo.out 2>foo.err
具有三个输出IO流
- 将数据存档到foo.tar
- 文件名列表到STDOUT(重定向到foo.out)
- 错误消息到STDERR(重定向到foo.err)
然后,我可以检查foo.err中是否有错误消息,而不必阅读文件名列表。
如果我想对存档数据做一些事情(通过netcat或特殊的压缩程序通过管道传输),则可以使用tar的 -f -
选项
tar cvf - ./foo 2>foo.err | squish > foo.tar.S
但是现在我的文件名列表和我的错误消息混在一起了,因为tar的-v
输出显然无法转到STDOUT(这是存档数据流的地方),因此tar巧妙地将其写入了STDERR。
使用Korn Shell,有一种方法可以构造一个命令,该命令将存档流传输到另一个命令,但仍然捕获-v
输出与任何错误消息。
tee
吗?这似乎是一个非常有效的用例。