在工作开始初期,我曾经为了“ >/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命令中,表示不输出任何内容。

Logo

更多推荐