/dev/null和/dev/zero的区别
/dev/null和/dev/zero都是Linux/Unix系统中特殊的设备文件,但它们的行为和用途有本质区别。 简单来说: /dev/null:数据黑洞。写入它的数据会永远消失;读取它则会立即得到文件结束符(EOF)。核心思想:扔掉不需要的东西,或者得到“空”的东西。在命令行中,你经常想只执行一个命令,而不关心它的输出,或者不想让输出信息刷屏。这时,你可以将标准输出(stdout)和标准错误输出(stderr)重定向到/dev/null,如测试从指定服务器下载一个文件的速率,并不保存当前下载的文件
wget -O /dev/null https://speed.cloudflare.com/__down?bytes=1000000000
/dev/zero:零字节源。写入它的数据会永远消失(行为类似/dev/null);读取它会得到无限个、连续的零字节(0x00)。核心思想:获取一堆二进制的零。你可以使用dd命令从/dev/zero读取数据,并写入一个新文件,从而创建一个充满零字节的、指定大小的文件,如创建一个1MB大小、内容全为零的文件
dd if=/dev/zero of=zero_file.bin bs=1M count=1
其中:
· if=/dev/zero:输入文件(input file)是 /dev/zero。
· of=zero_file.bin:输出文件(output file)是 zero_file.bin。
· bs=1M:每次读写的数据块大小是 1 MiB。
· count=1:只读写一个数据块。
记住这个简单的比喻: /dev/null像一个碎纸机,你扔进去的东西就没了,并且从里面什么也拿不出来。 /dev/zero像一个无限的零钞票打印机,你扔进去的东西也没了(碎纸机功能),但你可以随时从里面取出无数张面值为“零”的钞票。 |