/dev/null文件使用

来源:互联网 发布:linux下的c ide 编辑:程序博客网 时间:2024/05/21 23:32

今天读到这样一行代码

echo $1 | grep -E $ip_re >/dev/null 2>&1

愣了半天。然后查了一下弄明白了,写个笔记记录一下。

1 /dev/null用法

这是Unix的一个特殊文件,相当于回收站,一切抛入/dev/null的数据都将被忽略。

上面这行代码的1 -->表示标准输出 2-->表示标准错误输出

下面举几个例子来说明/dev/null与标准输出以及标准错误输出结合使用的例子。

首先随便cd到一个你喜欢的目录键入ls 很显然会显示出此目录下的所有文件以及子目录

然后键入

ls 1>/dev/null

这里我们使用了一个重定向操作符,将ls的内容重定向到了/dev/null中,可以看到终端也就是标准输出什么也没有输出。这里的1表示将ls的原本输出到标准输出的内容重定向至/dev/null。

ls 2>/dev/null

因此上面这条语句就很好理解了,将ls的原来输出的标准错误输出的内容重定向至/dev/null.所以当键入上面的命令时显示的内容与键入ls是一样的,因为没有错误产生。

ls /a 2>/dev/null

/a这个目录在我执行ls命令的目录下是没有的,因此执行ls会报一个/a不存在的错,但是我将本来应该输出的标准错误输出的内容给了/dev/null,所以不会显示任何内容。

ls 1>/dev/null 2>&1

上面这条语句已经很接近我一开始看到的那条语句了。这句话的意思是将ls的标准输出结果重定向到/dev/null

2>&1
表示将标准错误错误等同于标准输出,而标准输出被我们重定向到了/dev/null,所以标准错误输出也重定向到了/dev/null


2. 何时需要使用/dev/null

当我们需要命令的退出状态而非命令的输出时,我们经常采用cmd 1>/dev/null 2>&1的写法,然后通过$?来判断返回值。

grep命令的返回值

EXIT STATUS       0 if selected lines are found,        1 if not found.        2.if an error occurred(Note: POSIX error handling code should check for '2' or greater.)

ls命令的返回值
   Exit status:       0      if OK,       1      if minor problems (e.g., cannot access subdirectory),       2      if serious trouble (e.g., cannot access command-line argument).


0 0
原创粉丝点击