Linux /dev/null文件用法介绍
在类 Unix 系统(如 Linux、macOS)里,/dev/null
是一个特殊的设备文件,常被称作 “黑洞” 或者 “空设备”。它的作用是接收并丢弃所有写入的数据,且从它读取数据时会马上返回文件结束符。下面为你详细介绍 /dev/null
的常见用法。
丢弃命令输出
当你不希望命令的输出显示在终端上,就可以把输出重定向到 /dev/null
。标准输出(stdout
,文件描述符为 1)和标准错误输出(stderr
,文件描述符为 2)都能进行重定向。
丢弃标准输出
ls /path/that/might/not/exist > /dev/null
在这个例子中,ls
命令用于列出指定路径下的文件和目录。如果路径不存在,ls
会产生错误信息;若路径存在,会输出文件和目录列表。通过 > /dev/null
,将标准输出重定向到 /dev/null
,这样命令执行的正常输出就不会显示在终端上。
丢弃标准错误输出
ls /path/that/might/not/exist 2> /dev/null
这里的 2>
是专门用于重定向标准错误输出的符号。此命令会把 ls
命令可能产生的错误信息丢弃,而正常的输出则不受影响(如果有正常输出的话)。
同时丢弃标准输出和标准错误输出
ls /path/that/might/not/exist > /dev/null 2>&1
2>&1
的作用是把标准错误输出重定向到标准输出,结合 > /dev/null
,就可以将标准输出和标准错误输出都重定向到 /dev/null
,从而让命令执行时不产生任何可见的输出。
作为输入文件
在某些情况下,你可能需要给命令提供一个空的输入。此时,/dev/null
就可以当作一个空文件来使用。
diff /dev/null file.txt
diff
命令用于比较两个文件的差异。这里将 /dev/null
作为第一个文件,实际上就是将 file.txt
与一个空文件进行比较,会输出 file.txt
中的所有内容。
清空文件内容
你可以把 /dev/null
的内容重定向到一个文件,以此清空该文件的内容。
cat /dev/null > existing_file.txt
执行这个命令后,existing_file.txt
文件的内容会被清空,但文件本身依然存在。
后台进程抑制输出
在启动后台进程时,为避免其输出干扰终端,可以将其输出重定向到 /dev/null
。
your_command > /dev/null 2>&1 &
&
让命令在后台运行,> /dev/null 2>&1
则把命令的标准输出和标准错误输出都重定向到 /dev/null
。