- 1.png
- 在/Linux和类/Unix系统中,有一个非常神奇且实用的文件,那就是/dev/null
- 它像一个深不见底的黑色洞穴,吞噬所有进入其中的数据
- 之前写的一篇的文章中我使用过这个文件来进行标准错误的屏蔽
- 本博客将揭示/dev/null的奥秘以及它的使用场景
- 介绍
- /dev/null是一个特殊的设备文件,被称为 "空设备"
- 任何写入/dev/null的数据都会被丢弃,而尝试从/dev/null读取数据会立即返回文件结束EOF
- 它可以看作是一个数据的黑洞,将数据送入其中就意味着数据被销毁
- 使用场景
- 丢弃标准输出
- 当执行一个命令但不希望看到其标准输出stdout时,可以将其重定向到/dev/null
- 不希望输出的信息在终端上进行显示
- 或者说某个程序持续生成大量日志到指定的日志文件, 而暂时不需要这些信息
- 可以将该日志文件链接到/dev/null,这样写入该日志文件的内容将被丢弃
ln -s /dev/null /media/buyan/1/脚本监控/请求记录/waf.log
- 忽略错误信息
- 当运行某些命令时,可能会产生标准错误stderr
- 如果我们不希望这些错误信息显示在屏幕上,可以将标准错误重定向到/dev/null
- 比如我在文章mysqldump: [Warning] Using a password on the command line interface can be insecure.中的使用,屏蔽的MYSQL的标准错误
mysql -ubuyan -p123456789 2>/dev/null
- 注意,如果你执行的命令存在语法错误,比如使用了错误的参数,也将看不到错误提示
- 因此需要先测试命令,确保其可以正常执行,再添加
2>/dev/null
- 当然也可以使用2>&1将标准错误重定向到标准输出,然后与标准输出一起重定向到/dev/null
command >/dev/null 2>&1
- 作为输入源
- 当程序需要读取数据,而实际上并不需要任何实际内容时,可以将/dev/null作为输入来源
command > /dev/null
- 测试命令行为
- 由于/dev/null可以提供一个空的数据源或接收任意大小的数据而不占用资源
- 所以在测试命令如何处理空输入或无反馈输出的情况时非常有用
- 清空文件内容
- 清空文件内容有很多种方法,因为/dev/null可以提供一个空的数据源,所以也可以用来清空文件内容
: > /media/buyan/1/脚本监控/请求记录/waf.log
> /media/buyan/1/脚本监控/请求记录/waf.log
echo "" > /media/buyan/1/脚本监控/请求记录/waf.log
echo > /media/buyan/1/脚本监控/请求记录/waf.log
- 利用/dev/null清空文件内容
cat /dev/null > /media/buyan/1/脚本监控/请求记录/waf.log
【Linux中的神秘黑洞:/dev/null】
开始
完结