Linux文件的类型

在Linux中文件的类型是通过文件权限的首位定义的,可以分为以下几类。

1.普通文件

普通文件包括源程序文件、脚本文件、可执行程序文件及各种数据文件。普通文件的文件类型标识位为"-",使用ls命令可以查看文件的类型,例如:

  1. #ls  -l  suple  
  2. -rw-r--r--   1 root root   540 07-23 08:31 suple 

2.目录文件

目录实际上是一种特殊的文件。目录下可以包含文件和子目录。目录文件的类型标识位为"d",如下所示:

  1. #ls  -l  tmp  
  2. drwxrwxrwt  21 root root  4096 07-25 22:49 tmp 

3.套接字文件

套接字(socket)是用来进行网络通信的常用方法之一。Linux文件系统可以通过套接字文件实现网络通信。套接字的文件类型标识位为"s",例如:

  1. #ls  -l  x1  
  2. srwx------  2 root root  0 07-25 17:49 x1 

4.命名管道

文件系统通过命名管道文件可以实现进程间的通信。命名管道的文件类型标识位为"p",例如:

  1. #ls  -l  p1  
  2. prwx------  2 root root  0 07-25 17:59 p1 

5.设备文件

Linux系统将设备识别为特殊的文件进行处理。设备文件可以分为两类:字符设备和块设备。字符设备的文件类型标识位为"c",打印机、键盘等都属于字符设备。磁盘、磁带等都属于块设备,块设备的文件类型标识位为"b"。在系统的/dev目录下存放了大量的设备文件,例如字符终端tty1的设备文件为/dev/tty1。使用ls命令可以看到字符设备的首字符为"c",块设备的首字符为"b",如下所示:

  1. #ls  -l  /dev/tty1  
  2. crw-------  1 root root     4,    1 07-25 05:44 tty1  
  3. #ls  -l  /dev/sda1  
  4. brw-r-----  1 root disk     8,    1 07-25 05:41 sda1 

6.链接文件

为了使用、管理的方便和节省磁盘空间,Linux 允许一个物理文件有一个以上的逻辑名,即可以为一个文件创建一个链接文件,用来表示该文件的另一个名字。不同的链接文件可为之指定不同的访问权限,从而实现既可共享,又可安全控制的目的。

Linux文件系统中有两类链接文件:一类叫做硬链接,一类叫做符号链接。硬链接的文件类型标识位与被链接的文件相同。不带参数使用ln命令可以建立硬链接文件,例如对sysv文件建立硬链接的命令如下:

  1. # ls  -il  sysv  
  2. 390162 -rw-r--r-- 1 root root 0 07-26 00:51 sysv  
  3. # ln  sysv syslink  
  4. # ls  -il  sysv slink  
  5. 390162 -rw-r--r-- 2 root root 0 07-26 00:51 slink  
  6. 390162 -rw-r--r-- 2 root root 0 07-26 00:51 sysv  

从本例中可以看出硬链接文件slink与被链接的文件sysv指向同一个i节点(节点编号390162),硬链接与被链接的文件具有相同的文件类型标识位"-",建立硬链接后,文件的链接数由1变为2。

实际上硬链接只是源文件的一个硬复制,它们在目录文件中的入口项指向的是同一个i节点。只有当硬链接的全部链接被删除时才能够释放此i节点。用户对这个文件所做的任何修改,所有的硬链接都可以同步看到。硬链接的文件必须在同一个文件系统中,目录不能建立硬链接。

建立符号连接可以使用带参数"-s"的ln命令,符号链接只是指定到真实文件的访问路径上,与源文件的i节点号不同。如果源文件被删除,符号链接就被损坏了。符号链接的文件类型标识位为"l"。例如为文件ftpuser建立符号链接fuser,命令如下所示:

  1. # ls  -il  ftpuser  
  2. 390161 -rw-r--r-- 1 root root 0 07-26 01:17 ftpuser  
  3. # ln  -s  ftpuser  fuser  
  4. # ls  -il  ftpuser fuser  
  5. 390161 -rw-r--r-- 1 root root 0 07-26 01:17 ftpuser  
  6. 390162 lrwxrwxrwx 1 root root 7 07-26 01:18 fuser -> ftpuser  
  7. # rm  ftpuser  
  8. rm:是否删除 一般空文件 "ftpuser"? y  
  9. # ls  -il  ftpuser  fuser  
  10. ls: ftpuser: 没有那个文件或目录  
  11. 390162 lrwxrwxrwx 1 root root 7 07-26 01:18 fuser -> ftpuser 

可以看到ftpuser与fuser的i节点号不同(ftpuser为390161,fuser为390162),fuser的文件类型标识位为"l"。源文件ftpuser被删除后,符号链接文件报错。

与硬链接不同,符号链接可以跨文件系统建立,并且可以指定到目录。硬链接与符号链接的区别如图6.3所示。

 
图6.3  硬链接与符号链接

posted @ 2015-02-23 18:55  不灭的火  阅读(1123)  评论(0编辑  收藏  举报