关于linux中标准输出的迷惑

今天蚊子在看RHCE033教程的时候,在第7单元标准输入输出这部分

其中STDOUT和STDERR支持三种操作

>  将STDOUT输出到文件
2> 将STDERR输出到文件
&> 将所有输出存到文件

由教程得知,linux只有STDOUT和STDERR这两种输出方式

同时呢,我们平时再使用脚本的时候都喜欢使用下面这种方式来执行脚本

/filepath/file.sh >/dev/null 2>&1

这样先把标准输出转到了/dev/null设备上,同时把标准错误输出(STDERR)转向到标准输出(STDOUT)上了,这样标准错误(STDERR)输出也就转到了/dev/null设备上,这样说白了就是把所有输出都转到了/dev/null设备上了。

蚊子的问题就是既然有&>这种全部输出方式,为啥不用

/filepath/file.sh &>/dev/null

这种方式来执行脚本呢?难道&还包含了STDOUT和STDERR之外的输出?还是说只是为了对脚本的运行方式更直观明白呢?

蚊子就认为用&>/dev/null可以替代>/dev/null 2>&1,也欢迎各位linuxer来讨论。

补充:

在033后续内容中有这么一个例子

$ find /etc -name passwd 2>&1 | less

这里用到了STDERR转向到STDOUT上,同时把结果通过管道传递给了less命令,蚊子想了一下,如果要是用&>还真是没法实现这个操作。

由此看来,&>替换2>&1只能是在某些特定的时候,并不是所有场合都适用。