关于Linux标准输出笔记
看一个栗子:cat test.txt > /dev/null 2>&1
(1) >/dev/null (大于号之前不带数字,默认为1)首先表示标准输出重定向至空设备文件。即终端无任何信息显示。
(2) 2>&1 其次,2表示标准错误输出,整体表示将标准错误输出重定向至与1标准输出同样的位置。这里即空设备文件/dev/null
底层原理:
command > file 2>file,将命令所产生的标准输出信息和错误信息输出重定向至file中。这种方式,会将file打开两次,并且标准输出与错误信息会相互覆盖。相当于,使用了FD1和FD2两个同时去抢占file的管道。
command > file 2>&1,将标准输出至file,错误信息的输出所使用的管道是继承标准输出的管道,所以file仅会打开一次。
从IO效率来看,第一条命令效率较低。故常用第二条命令。