在我的开发环境中,存在一个将标准输出写入特定文件的别名。
它使用带三通的管道,例如du -h | & tee /tmp/diskUsage
。
我理解 AND 运算符会使其前面的内容成为文件描述符而不是文件名,比如2>&1
我们将 stderr 重定向到 stdout,而不是当前目录中名为“1”的文件。
但是,对于用法来说| & tee
,在'&'之后和“tee”之前没有任何有意义的内容,在这种情况下它起什么作用?
在我的开发环境中,存在一个将标准输出写入特定文件的别名。
它使用带三通的管道,例如du -h | & tee /tmp/diskUsage
。
我理解 AND 运算符会使其前面的内容成为文件描述符而不是文件名,比如2>&1
我们将 stderr 重定向到 stdout,而不是当前目录中名为“1”的文件。
但是,对于用法来说| & tee
,在'&'之后和“tee”之前没有任何有意义的内容,在这种情况下它起什么作用?
|&
是“将 stderr 和 stdout 从左侧程序通过管道传输到右侧程序”的简写。基本上,
tee
将接收混合在一起的正常输出和错误输出,而不仅仅是像|
通常那样接收 stdout。或者引用GNU 文档: