全站首页设为首页收藏本站

西虹市网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

社区广播台

    查看: 31|回复: 6
    打印 上一主题 下一主题

    聊一聊:Linux玄妙之 /dev/null

    [复制链接]
    跳转到指定楼层
    楼主
    发表于 2022-7-20 08:12:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

    西虹网 西虹网  我们在和 Linux 接触当中,经常会见到 /dev/null 。红帽认证一直是行业的佼佼者,在业内好评如潮,备受大众所青睐。
    西虹网 西虹网

    西虹网 西虹网
    西虹网 西虹网  那它究竟是什么呢?我们今天就来了解一下Linux中的 /dev/null 。
    西虹网 西虹网
    西虹网 西虹网  /dev/null 在Linux中其实是一个空设备文件。它天生就自命不凡,与普通文件划清界限。
    西虹网 西虹网
    西虹网 西虹网  其它文件遇到写入的内容照单全收,而 /dev/null 对于写入的东西通通扔掉。
    西虹网 西虹网
    西虹网 西虹网  如果你使用 cat 去读取这个文件,那么它只会返回文件终点(EOL: end of file)。
    西虹网 西虹网
    西虹网 西虹网  我们还可以通过以下命令来验证 /dev/null 是一个文件:
    西虹网 西虹网
    西虹网 西虹网  stat /dev/null
    西虹网 西虹网
    西虹网 西虹网  从输出中,我们可以看到这个文件的大小是0字节大小,所有人都有读写权限,没有执行权限。另外,它还是个 character special files。
    西虹网 西虹网
    西虹网 西虹网  由于它没有执行权限,不是一个可执行文件,所以不能使用管道符 | 来接 /dev/null ,只能使用文件重定向(>, >> 或 <, <<)。
    西虹网 西虹网
    西虹网 西虹网  对于character special file,IBM的网站上对其有一段说明。
    西虹网 西虹网
    西虹网 西虹网  character special file(字符特殊文件,有更好的翻译欢迎在评论区指出)是一个能够让你访问 输入/输出 设备的文件。比如终端文件,NULL文件,文件描述符文件,系统控制台文件等。每个字符特殊文件都有一个设备大版本号,标识了设备类型;一个设备小版本号,标识了这个设备类型下的某个特定设备。字符特殊文件习惯上都定义在 /dev 中,这些文件通过 mknod 命令定义。等等等等。
    西虹网 西虹网
    西虹网 西虹网  我们可以通过把命令的输出重定向到 /dev/null 来丢弃脚本的全部输出。
    西虹网 西虹网
    西虹网 西虹网  比如,我们可以把 echo 命令的输出进行丢弃:
    西虹网 西虹网
    西虹网 西虹网  echo "Hello, it's me" > /dev/null
    西虹网 西虹网
    西虹网 西虹网  不过如果我们使用一个会报错的命令,将标准输出重定向到 /dev/null ,事情的发展会和我们想的不太一样:
    西虹网 西虹网
    西虹网 西虹网  jiamingling > /dev/null
    西虹网 西虹网
    西虹网 西虹网  执行以后,下面仍旧能看到输出。难道是重定向失败了么?
    西虹网 西虹网
    西虹网 西虹网  其实并没有。> 所做的重定向是将标准输出到 /dev/null ,也就是将命令的正常输出重定向到 /dev/null 。
    西虹网 西虹网
    西虹网 西虹网  然后 /dev/null 只做一件事,那就是将东西全部丢弃。
    西虹网 西虹网
    西虹网 西虹网  但是因为 jiamingling(假命令的拼音) 并不存在,所以调用它会报错,报错信息 jiamingling: command not found 并不属于标准输出,而是属于标准错误输出。由于标准错误输出并没有被重定向到 /dev/null ,所以会正常打印出来。
    西虹网 西虹网
    西虹网 西虹网  要把标准错误输出重定向到 /dev/null ,也很简单,使用标准错误输出(stderr)的文件描述符 2 来指代它,并对其重定向:
    西虹网 西虹网
    西虹网 西虹网  可能有朋友会问:输出就输出咯,还要分标准输出(stdout)和 标准错误输出(stderr),有必要么?
    西虹网 西虹网
    西虹网 西虹网  答案是,很有必要。因为我们日常在执行Linux命令的过程中,经常会遇到输出内容特别多的情况。里面既有正常的输出内容,也有错误的输出内容。将重定向和 /dev/null 结合起来,就可以帮助我们起到过滤的作用。
    西虹网 西虹网
    西虹网 西虹网  如果你只关心正常输出,可以在命令后面这样重定向:
    西虹网 西虹网
    西虹网 西虹网  2> /dev/null
    西虹网 西虹网
    西虹网 西虹网  这样一来,你看到的所有输出,都是命令正常执行的输出,忽略所有错误输出。
    西虹网 西虹网
    西虹网 西虹网  同理,如果你只关心报错内容,可以在命令后面这样重定向:
    西虹网 西虹网
    西虹网 西虹网  > /dev/null
    西虹网 西虹网
    西虹网 西虹网  毫不夸张地说,用好这些技巧,也许可以让你少加班几个小时哦。
    西虹网 西虹网
    西虹网 西虹网  如果喜欢这篇文章的话,记得长按点赞哦。我们下期不见不散。
    西虹网 西虹网
    西虹网 西虹网  举报/反馈
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏 转播转播 分享分享
    回复

    使用道具 举报

    沙发
    发表于 2022-9-28 08:00:27 | 只看该作者
    昌平的网上家园 哈哈 平台不错啊
    回复 支持 反对

    使用道具 举报

    板凳
    发表于 2022-12-6 16:37:49 | 只看该作者
    看帖回帖是美德!
    回复 支持 反对

    使用道具 举报

    地板
    发表于 2022-12-30 02:23:49 | 只看该作者
    谢谢楼主,共同发展
    回复 支持 反对

    使用道具 举报

    5#
    发表于 2023-1-6 08:24:34 | 只看该作者
    帮你顶下哈!!
    回复 支持 反对

    使用道具 举报

    6#
    发表于 2023-1-11 19:02:34 | 只看该作者
    路过,学习下
    回复 支持 反对

    使用道具 举报

    7#
    发表于 2023-1-16 17:16:30 | 只看该作者
    相当不错,感谢楼主无私分享精神!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    快速回复 返回顶部 返回列表