在工作开始初期,我曾经为了“ >/dev/null 2>&1 ”这一种纠结。今日又看到这种命令后缀,感触良多。如果你也有这种困惑,不妨来看看这篇小文章。
在lunix中,有三种标准流:标准输入流、标准输出流、标准错误流。为了区分这三种流,linux分别为他们编号0, 1,2 进行区分。也就是说标准输入流的编号为0、标准输出流 为1 、标准错误流编号为2。在默认的情况下,linux的标准输入来自于键盘;输出流,错误流 是输出到屏幕上的。
上面的是基础理论。知道这些,就可以说正题啦。
重定向格式 :流 > 文件 意思是把 某流的内容重定向到某文件。引申:为什么此处说“文件”二字,因为linux系统内 万物皆文件。在linux看来,everything is file,设备是文件,键盘,屏幕等都是文件。
>/dev/null : 这是一种简写,完整的写法是 1 >/dev/null 。 在linux中,默认的重定方向就是保证输出流,也就是1 。咱们熟悉如下命令:cat xx.txt > other.txt 其实这也是简写啦,把1省略了,完整写法cat xx.txt 1> other.txt。 那么这句就是把标准输出流重定向到空设备,也就是说不再输出标准输出流的内容了。那么2>&1 又是什么意思呢? 也很简单,这也是重定向的结构。2表示标准错误流。& 表示等同的意思,也就是说跟1的情况一样,跟1采取相同方式,即标准错误流跟标准输出流采取同样会的处理方式,也就是重定向到空设备。这个后缀经常使用在linux命令中,表示不输出任何内容。