一个普通的 tar 命令
tar cvf foo.tar ./foo >foo.out 2>foo.err
Run Code Online (Sandbox Code Playgroud)
具有三个输出 IO 流
然后我可以检查 foo.err 是否有错误消息,而无需通读文件名列表。
如果我想对存档数据做一些事情(通过 netcat 或特殊压缩程序进行管道传输),我可以使用 tar 的 -f -选项
tar cvf - ./foo 2>foo.err | squish > foo.tar.S
Run Code Online (Sandbox Code Playgroud)
但是现在我的文件名列表与我的错误消息混合在一起,因为 tar 的-v输出显然不能进入 STDOUT(这是存档数据流动的地方),所以 tar 巧妙地将其写入 STDERR。
使用 Korn shell,有没有一种方法可以构造一个命令,将归档流通过管道传输到另一个命令,但仍能将-v输出与任何错误消息分开捕获。