专栏首页编程珠玑Linux下你还知道这些特殊文件?

Linux下你还知道这些特殊文件?

来源:公众号【编程珠玑】

作者:守望先生

ID:shouwangxiansheng

我们都知道Linux下一切皆文件,主要有

  • - 普通文件
  • d 目录
  • l 符号链接
  • s 套接字
  • b 块设备
  • c 字符设备
  • p 管道

这么几种文件。 这里的前缀字符可以通过ls命令观察到:

$ ls -l test.log
-rw-r--r-- 1 root root 33 Nov 17 17:03 test.log

它的结果最前面是-,因此它是普通文件。

$ ls -al /dev/null
crw-rw-rw- 1 root root 1, 3 Sep 11 20:33 /dev/null

它的结果最前面是c,因此它是字符设备。

文件简单介绍几种字符设备文件,它能在我们功能测试的时候提供很好的帮助。

/dev/null

/dev/null 可无限接收数据,你可以认为是一个黑洞,因此如果我们需要丢弃某些终端输出,可以重定向到这里:

$ echo "shouwangxiansheng" > /dev/null

所以如果你有不需要的数据可以尽情的往这里写。

/dev/full

它在读取时会读取到连续的NUL(零值)字节流,而在写入的时候,会返回磁盘空间已满的结果,

后者在测试你的程序的时候会有帮助,即测试磁盘满的场景:

$ echo "bianchengzhuji" > /dev/full
-bash: echo: write error: No space left on device

/dev/zero

和/dev/null类似,向其中写入时会丢弃所有数据,但是读取时,会产生NUL(零值)字节流。

$ cat /dev/zero |od -x 
0000000 0000 0000 0000 0000 0000 0000 0000 0000

/dev/random

/dev/random可以提供随机数据流,它保证数据的随机性,但是读取时会造成等待,例如

$ cat /dev/random | od -x
0000000 2b07 daac 42f4 e1fd fb62 2098 870e e0af
0000020 3022 2099 e5da 4e1c d6db 548b a979 1217
0000040 3777 bb6a 957d 1279 ab29 e8a4 6a36 ecca
0000060 39ec 2285 126c 30ea ea67 1526 5e4a 2dd9

稍过会才会出现数据,为了便于查看,我们利用od命令查看其十六进制内容。

/dev/urandom

从名字就可以看出来,是用来产生随机数据的。它的产生速度很快,但是数据的随机性不如/dev/random

cat /dev/urandom | od -x
0547560 f43e 696a 8936 2b27 36c8 4446 2802 1d47
0547600 b8af 249d aae9 edbf 8971 b1d1 0c73 3e2d
0547620 237b 9a81 6348 cb2a 1972 4486 028a 3573
0547640 1690 c388 64e1 aec1 d5f4 1964 bbb9 192f
0547660 f242 7194 51ba 62a3 fc13 ff53 fb50 e3d8
0547700 ef32 3658 b335 75ee 62de 4096 6468 c979
0547720 01b9 c233 878d 12fc 5cfa 5691 89e1 e1f9

/dev/pts

/dev/pts是远程登陆(telnet,ssh等)后创建的控制台设备文件所在的目录。有什么用呢?举个例子,你打开一个终端,获取到当前的pts:

$ tty
/dev/pts/0

然后你又打开一个,输入:

$ echo "hahahaha">/dev/pts/0

你就会发现内容被打印到前面一个终端了。

通常我们运行一个程序,其printf的打印都会打印在当前终端。

总结

实际上在/dev下还有非常多的特殊文件,但是不一一介绍。以上特殊文件在一定场合下能帮助我们开发或者测试。

本文分享自微信公众号 - 编程珠玑(shouwangxiansheng),作者:守望先生

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-11-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 一个命令帮你对文本排序

    在Linux下,有时候需要对文本内容进行排序,例如按照字典顺序排序,按照数字排序或者按照特定列排序等等。今天我们就借助一个命令-sort来满足我们对文本排序的需...

    编程珠玑
  • 如何优雅地将printf的打印保存在文件中?

    我们都知道,一般使用printf的打印都会直接打印在终端,如果想要保存在文件里呢?我想你可能想到的是重定向。例如:

    编程珠玑
  • 系统调用和库函数的区别

    从用户的角度来看,系统调用和库函数似乎没有什么区别,它们都是以C函数的形式出现,并且两者都为应用程序提供服务。但从实现者角度来看,它们之间是有根本的区别。那么,...

    编程珠玑
  • Ubuntu16.04安装Python3

    https://www.python.org/downloads/release/python-370/

    用户2398817
  • linux软raid制作记录

    domain0
  • mac电脑进行可见光通信实验要点

    俺踏月色而来
  • nghttp2 - HTTP/2 C Library 简明教程(二)

    程序手艺人
  • mac电脑进行可见光通信实验要点

    俺踏月色而来
  • Linux  释放Linux 系统预留的硬盘空间

    大多数文件系统都会保留一部分空间作为紧急情况时用(比如硬盘空间满了),这样能保证有些关键应用(比如数据库)在硬盘满的时候有点余地,不至于马上就crash,给监控...

    授客
  • 10.YOLO系列及如何训练自己的数据。

    SSD失败之后就挺失望的,而且莫名其妙,于是转向YOLO了,其实object detection领域可选的模型并不多,RCNN系列我是大概看过的,还写过:RCN...

    和蔼的zhxing

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动