经常需要记忆这个东西,cmd>/dev/null 2>&1,那么原因是什么呢?
今天好好研究下这个东西
首先是2>1和2>&1的区别,很明显,我们是需要2>&1而不是2>1
2>&1这个是说将cmd执行的错误内容输出到标准输出中
2>1这个则是将cmd执行的错误内容输出到1这个文件中
第二点,2>&1是什么意思?&1是说文件描述符因此2>&1是说将错误输出输出到标准输出
第三点,为什么是cmd >/dev/null 2>&1而不是cmd 2>&1 >/dev/null呢?
如果先2>&1,那么这个时候还没有生成标准输出呢,因此也就无法复用标准输出的文件描述符了,所以需要先有标准输出然后再有错误输出传递到标准输出。