Linux下你还知道这些特殊文件?
我们都知道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 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 126 c 30 ea ea67 1526 5e4 a 2d d9
稍过会才会出现数据,为了便于查看,我们利用od命令查看其十六进制内容。
/dev/urandom
从名字就可以看出来,是用来产生随机数据的。 它的产生速度很快,但是数据的随机性不如/dev/random
cat /dev/urandom | od -x
0547560 f43e 696 a 8936 2 b27 36 c8 4446 2802 1d 47
0547600 b8af 249d aae9 edbf 8971 b1d1 0 c73 3e2d
0547620 237 b 9 a81 6348 cb2a 1972 4486 028 a 3573
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 62d e 4096 6468 c979
0547720 01 b9 c233 878d 12f c 5 cfa 5691 89e1 e1f9
/dev/pts
/dev/pts是远程登陆(telnet,ssh等)后创建的控制台设备文件所在的目录。 有什么用呢? 举个例子,你打开一个终端,获取到当前的pts:
$ tty
/dev/pts/ 0
然后你又打开一个,输入:
$ echo “hahahaha” >/dev/pts/0
你就会发现内容被打印到前面一个终端了。
通常我们运行一个程序,其printf的打印都会打印在当前终端。
总结
实际上在/dev下还有非常多的特殊文件,但是不一一介绍。 以上特殊文件在一定场合下能帮助我们开发或者测试。