43

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

 4 years ago
source link: http://mp.weixin.qq.com/s?__biz=MzI2OTA3NTk3Ng%3D%3D&%3Bmid=2649285306&%3Bidx=2&%3Bsn=afdebad474f0665eeb0b3fcdb44b1dff
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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

作者: 守望先生

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  13 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 2 b07 daac  42f 4 e1fd fb62  2098 870 e e0af

0000020 3022 2099 e5da  4e1 c d6db  548 b a979  1217

0000040 3777 bb6a  957d 1279 ab29 e8a4  6 a36 ecca

0000060 39 ec  2285 12630 ea ea67  1526 5e42d d9

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

/dev/urandom

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

cat /dev/urandom | od -x

0547560 f43e  6968936 2 b27  36 c8  4446 2802 1d 47

0547600 b8af  249d aae9 edbf  8971 b1d1  0 c73  3e2d

0547620 2379 a81  6348 cb2a  1972 4486 0283573

0547640 1690 c388  64e1 aec1 d5f4  1964 bbb9  192f

0547660 f242  7194 51 ba  62 a3 fc13 ff53 fb50 e3d8

0547700 ef32  3658 b335  75 ee  62d4096 6468 c979

0547720 01 b9 c233  878d 12f5 cfa  5691 89e1 e1f9

/dev/pts

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

$ tty

/dev/pts/ 0

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

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

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

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

总结

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

相关精彩推荐

这个编程技巧别说我没告诉你

为什么执行自己的程序要在前面加./

学Linux到底学什么?

关注公众号【编程珠玑】,获取更多Linux/C/C++/数据结构与算法/计算机基础/工具等原创技术文章。 后台免费获取经典电子书和视频资源

2IvMNvU.jpg!web


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK