1.什么是/dev
在 Linux 上,从驱动程序到设备的所有内容都可以作为文件进行访问。/dev/ 是包含所有物理和虚拟设备的目录。例如,/dev/sda 可能是您的主硬盘驱动器,/dev/sdb 可能是您现在正在使用的笔记本驱动器的文件。这就是您在 Linux 中访问设备的方式。除了这些物理设备(如硬盘驱动器)之外,Linux还具有虚拟设备。虚拟设备是类似于物理设备的设备,但实际上仅以软件形式存在。应用程序可以从这些设备获取数据,但这些数据(而不是来自物理设备)来自操作系统本身
2.什么是/dev/null
虚拟设备是充当物理设备的设备,但实际上仅以软件形式存在。应用程序可以从这些设备获取数据,但该数据不是来自物理设备,而是来自 fra/dev/null,它是一种特殊的虚拟设备,用于写入而不是读取。写入 /dev/null 的任何内容都会从操作系统中消失。正是由于这个原因,/dev/null 被称为 bitbucket。例如,在这里,将"Hello World"输出重定向到/dev/null中。如您所见,没有输出。输出“Hello World”不存储在系统上的任何文件中。它只是消失了。
3.如何将/dev/null与stdout和stderr一起使用?
把标准错误重定向到标准输出,和标准输出一样,接着标准输出重定向了a.a文件,所以最终是把标准错误以及标准输出重定向到了a.a文件。
最后如何只打印错误消息以及如何只打印正确信息。通过重定向到/dev/null,来丢弃对应的内容,把正确的输出重定向到/dev/null.意思是只打印错误的信息。把标准错误重定向到/dev/null,意思就是把错误丢弃,只显示正确的信息。
上图是丢弃错误信息到/dev/null
上图是丢弃正却信息到/dev/null
总结:从上问中可以看到 /dev/null 在 Linux 中是一个 void,它会吸收任何输入,并且不返回任何内容。大多数情况下,管理员使用if来转储无用的数据,在其中输出,这样它就不会占用系统内存和处理能力。甚至可以通过将无用的文件直接移动到 /dev/null/ 来删除它们。