Linux系统有如表所示的几种文件类型。
使用ls -lih 命令就可以看到各个文件的具体信息,下面选取以上所提到的这几种文件,列出他们的信息。
除了设备文件(包括字符设备文件和块设备文件二种)外,每一个文件的信息可分为8个部分:
他们的意义如下:
第一部分:
表示文件的索引节点inode。索引节点里存放一个文件的上述信息,比如文件大小、属主、归属的用户组、读写权限等,并指出文件的实际存放位置。
字段2:
文件种类和权限。
其中 -表示普通文件,d表示目录,c表示字符设备,b表示块设备,p表示FIFO(即管道),l表示软连接(也称符号链接),s表示套接字(socket)。
没有专门的符号来表示硬连接类型,硬连接也是普通文件,只不过文件的实际内容只有一个副本,连接文件和被连接文件都指向它,如上面的ln_hard文件是使用
ln readme.txt In_hard 命令创建出来的到redame.txt文件的硬连接,readme.txt和In_hard地位完全一样。他们都指向文件系统中的同一个位置,他们的硬连接个数都为2,表示 这个文件的实际内容被引用二次,可以看到这二个文件的inode都是一样的。
硬连接文件引入的另一个作用是使得可以用别名来引用一个文件,避免文件被误删除(只有当硬链接个数为1时,对一个文件执行删除操作才会真正删除文件的副本),它的缺点是不能创建到目录的连接,被连接文件和连接文件必须在同一个文件系统中。对此引入软连接,也称符号连接。
软连接只是简单地指向一个文件或者目录,并不增加它的硬连接个数,比如上面的ln_soft文件就是使用ln -s readme.txt ln_soft 创建出来的到readme.txt文件的软连接,它使用另一个inode。
第三部分:硬连接个数。
第四部分:文件拥有者。
第五部分:所属群组。
第六部分:文件或目录的大小。
第七部分:表示最后访问或修改时间。
第八部分:表示文件名或目录名。
对于设备文件,第六部分表示主设备号(用来表示这是哪类设备),第七部分表示次设备号(用来表示这是这类设备中的第几个)。