数据流重定向,该怎么解决

数据流重定向
在看鸟书学习linux

这里不懂了:
[dmtsai@linux ~]$ find /home -name testing > list 2> list  <==错误写法 
[dmtsai@linux ~]$ find /home -name testing > list 2>&1     <==正确写法 

为什么第一行是错误写法?
书上没有给出进一步的解释

我想问下,第一行的写法是语法上就是错的呢 还是说语法上没问题可以执行只不过会造成list文件里的混乱?
还是说一个文件不能同时接受两个数据流?
------解决思路----------------------
引用:
Quote: 引用:

第一种写法会造成标准出错的信息覆盖标准输出的信息

第二种写法将标准出错的信息导进标准输出的信息中,然后一起写到list文件中

详细解释查看《shell十三问》 第12章,关于“>  <” 重定向的介绍

个人觉得这些命令记住使用方法就行,深究起来没太大的必要,就像ls   mv使用了这么久也不知道它怎么实现的



你所说的“覆盖”,是指执行此命令后,文件里只有stderr信息而没有stdout信息?



比如stdout输出了123456, stderr输出了abc
按照你第一种写法将输出abd456到list中,如果err信息比out信息长,那么看不出什么问题,只是没有out信息而已,如果err比out短,那么两种信息将会混乱