在Linux操作系统中/dev/null和/dev/zero是两个相似却又很特殊的文件,特别是在shell脚本开发和系统运维过程中会经常用这两个文件,因此作为Linux系统工程师,必须了解这两个文件的区别和用法。

一、/dev/null的用法:
我们可以把/dev/null文件看作”黑洞”,它非常等价于一个只写文件,所有写入/dev/null文件的内容都会丢失,而从/dev/null文件
中也读取不到任何内容。然而,也正因为这些特点,在shell脚本开发和命令行维护时,/dev/null文件就可大展身手,显得非常的有用。

1. 禁止标准输出
例如:cat查看$filename文件,其回显信息将为空
# cat $filename >/dev/null

2. 禁止标准错误
例如:rm删除文件时,若$badname文件不存在,那么如下的方式则会过滤回显的错误信息
# rm $badname 2>/dev/null

3. 禁止标准输出和标准错误的输出
例如:cat查看$filename文件
# cat $filename 2>/dev/null >/dev/null
# 如果”$filename”不存在,将不会有任何错误信息提示.
# 如果”$filename”存在, 文件的内容不会打印到标准输出.
# 因此上面的代码根本不会输出任何信息.

4. 清除日志文件内容
例如:
# cat /dev/null > /var/log/messages
# : > /var/log/messages 有同样的效果, 但不会产生新的进程.(因为:是内建的)
# cat /dev/null > /var/log/wtmp

5. /dev/null的特殊用法,程序打印的日志将不再记录,避免系统空间被不需要的日志所占用
例如:将该cookie的日志文件链接到/dev/null,那么往该文件中写入的内容都将被抛弃
# ln -s /dev/null ~/.netscape/cookies

二、/dev/zero的用法:
/dev/zero和/dev/null一样,也是一个伪文件,但/dev/zero实际上能产生连续不断的null的流(二进制的零流,而不是
ASCII型的),写入/dev/zero的输出会丢失不见,而从/dev/zero读出一连串的null也比较困难,虽然这也能通过dd或一个十六进制
编辑器来做到,/dev/zero主要的用处是用来创建一个指定长度用于初始化的空文件,它通常都是配合dd命令一起使用的。

1. 用/dev/zero创建一个指定大小的临时文件
例如:结合dd命令可创建一个大小为1024*1000bit的文件/swap,当然这个文件的大小可通过bs和count参数去调整
# dd if=/dev/zero of=/swap bs=1024 count=1000

2. 通过/dev/zero将零填充到一个指定大小的文件,以使用某些特殊需求
例如:把RAM设备的内容用零填充,从而实现格式化RAM的目的
# dd if=/dev/zero of=$DEVICE count=$SIZE bs=$BLOCKSIZE

综上所述,/dev/null和/dev/zero文件的区别和用法如下:
/dev/null文件是空设备,也称为位桶(bit
bucket),它主要是用于“被写入”,任何写入它的输出都会被抛弃。如果不想让消息以标准输出显示或写入文件,那么可以将消息重定向到/dev
/null。因此凡是向/dev/null输入的任何数据,它通吃,并且不会撑着!
/dev/zero文件主要是用作一个标准的“0”输入设备,它可无穷尽地提供0,可以使用/dev/zero来初始化文件

Linux基础教程之/dev/null和/dev/zero的区别及其用法的更多相关文章

  1. Linux 下的两个特殊的文件 -- /dev/null 和 /dev/zero 简介及对比

    1.概论 -- 来自维基的解释 /dev/null  : 在类Unix系统中,/dev/null,或称空设备,是一个特殊的设备文件,它丢弃一切写入其中的数据(但报告写入操作成功),读取它则会立即得到一 ...

  2. 【linux】/dev/null与/dev/zero详解【转】

    转自:http://www.cnblogs.com/xianghang123/archive/2012/03/23/2413381.html 使用/dev/null 把/dev/null 看作&quo ...

  3. linux 中 /dev/null和/dev/zero的作用以及区别

    在类Unix操作系统中,设备节点并不一定要对应物理设备.没有这种对应关系的设备被称之为伪设备.操作系统运用了它们实现多种多样的功能,/dev/null和/dev/zero就是这样的设备,类似的还有/d ...

  4. 特殊文件: /dev/null和/dev/tty

    转自:http://www.cnblogs.com/stephen-liu74/archive/2011/11/10/2240461.html Linux系统提供了两个对Shell编程非常有用的特殊文 ...

  5. dev/null和dev/zero区别 以及换回设备(loopback device)

    转自:http://blog.chinaunix.net/uid-20729677-id-765105.html dev/zero,是一个输入设备,你可你用它来初始化文件. /dev/zero---- ...

  6. centos 阶段复习 2015-4-6 dd命令 hosts.allow和hosts.deny 啊铭的myssh脚本 清空history命令历史 /dev/zero 零发生器 /dev/null 黑洞 /dev/random 生成随机数 第十一节课

    centos 阶段复习 2015-4-6  dd命令 hosts.allow和hosts.deny 啊铭的myssh脚本 清空history命令历史  /dev/zero 零发生器  /dev/nul ...

  7. /dev/null和/dev/zero的作用

    经常会看到dd命令用到/dev/zero文件,这里总结一下/dev/null和/dev/zero的作用和使用实例. 在类Unix系统(包括Linux)中,/dev/null 它是空设备,也称为位桶(b ...

  8. /dev/null与/dev/zero区别

    /dev/null和/dev/zero的区别 /dev/null,外号叫无底洞,你可以向它输出任何数据,它通吃,并且不会撑着! /dev/zero,是一个输入设备,你可你用它来初始化文件.该设备无穷尽 ...

  9. Shell中的>/dev/null 2>&1 与 2>&1 >/dev/null 与&>/dev/null 的区别

    默认情况下,总是有三个文件处于打开状态,标准输入(键盘输入).标准输出(输出到屏幕).标准错误(也是输出到屏幕),它们分别对应的文件描述符是0,1,2 .那么我们来看看下面的几种重定向方法的区别: & ...

随机推荐

  1. C# 阳历转农历

    你妹的sb 原文 C#(ASP.NET)公历转农历的简单方法 Dot Net 平台,对全球化的支持做的非常好,不得不称赞一个 通常,将公历转为农历,是个非常烦的事情,需要整理闰年.闰月等的对照表. 在 ...

  2. Web通信之:长轮询(long-polling)(转)

    Web通信之:长轮询(long-polling) “轮询”是个耐人寻味的词,第一次看到它的时候我就直接理解为“轮流查询”了.但是看到了英文才知道这个是网络通信专业的术语.轮询,其实就是一群人在排队买东 ...

  3. OFBIZ+ECLIPSE

    1. 首先要安装好OFBIZ,参考<OFBIZ安装>. 2. 安装ECLIPSE. 3. 安装FreeMarker插件,这是OFBIZ的模版引擎.在"Eclipse Market ...

  4. Php 笔记2-----手机端 与 php服务器的通信

    对于 手机端 和 php服务器的通信,是不存在表单这一概念的  ,除非自己去实现, 所以通常情况下步骤是: 假定上传的是字符串. 1  手机端的流程是 把文件或者字符串,转化为 特定的流. 2 通过h ...

  5. Chapter12&Chapter13:程序实例

    文本查询程序 要求:程序允许用户在一个给定文件中查询单词.查询结果是单词在文件中出现的次数及所在行的列表.如果一个单词在一行中出现多次,此行只列出一次. 对要求的分析: 1.读入文件,必须记住单词出现 ...

  6. offer--链表反转和从尾到头打印链表

    这个是高频的面试题,今天总结了一些.反转链表用三个指针实现,返回新链表的头节点:而从尾到头打印,应用栈实现,返回vector整个链表. //题目描述 // //输入一个链表,反转链表后,输出链表的所有 ...

  7. @Html.Raw()

    asp.net mvc中把html字符串以html效果输出来, @string变更输出的是HTML代码, 如果想以HTML标签效果输出来可以用函数@Html.Raw(str) 输出来的就是网效果了, ...

  8. SNMP 和 NetBios协议理解

      一.简单网络管理协议(SNMP,Simple Network Management Protocol)构成了互联网工程工作小组(IETF,Internet Engineering Task For ...

  9. golang实现ios推送

    生成pem文件 打开Keychain Access 导出推送证书和私钥 推送证书 cert.p12 私钥 key.p12 导出.pem文件 转换推送证书 openssl pkcs12 -clcerts ...

  10. Hadoop学习笔记3---安装并运行Hadoop

    本文环境是在Ubuntu10.04环境下运行的. 在Linux上安装Hadoop之前,首先安装两个程序: 1.JDK1.6(或更高版本).Hadoop是用Java编写的程序,Hadoop编译及MapR ...