在`| & tee`命令用法中,AND运算符‘&’的具体作用是什么?
关于
|& tee中|&的作用 首先得明确:|&是bash(以及zsh等主流shell)里的简写语法,它等价于2>&1 |——也就是先把标准错误(stderr,文件描述符2)重定向到标准输出(stdout,文件描述符1),再通过管道把合并后的输出传给后面的命令。
拿你给的例子du -h |& tee /tmp/diskUsage来说:
- 如果只用普通管道
|:du -h | tee /tmp/diskUsage只会把du -h的正常输出(磁盘用量统计)传给tee,这样只有这些内容会被写入/tmp/diskUsage,同时打印到终端;而du执行时的错误信息(比如访问某些无权限目录的报错)会直接输出到终端,但不会被tee写入文件。 - 用
|&之后:du -h的标准输出+标准错误会被合并在一起,全部通过管道传给tee,这样不管是正常统计信息还是错误提示,都会被tee写入/tmp/diskUsage,同时也会在终端显示出来。
你觉得“&之后没有有效内容”是把|&拆成了|和&来看,但实际上这是shell的一个组合语法,不是两个独立符号的拼接,它就是专门用来简化“合并stderr到stdout再管道”这个常用操作的。
内容的提问来源于stack exchange,提问作者PkDrew
相关产品推荐
相关产品推荐

