正在学习Linux,记录一下学习历程。
当创建文件时,完成了两件事:
1. 在存储设备上保留一块空间用来存储数据
2. 创建一个称为索引节点或i节点的结构,来存放文件的基本信息
i节点包含使用文件所需的全部文件系统信息。可以通过stat命令查看i节点内容。
文件系统将所有的i节点存放在一个大表中,被称为i节点表。
在i节点表中,每个i节点由所谓的所引号或i节点号表示。
目录中只包含文件名称及文件的i节点号。
每当程序需要使用文件时,程序在目录中查找文件名将是一件简单的事,只需使用相应的i节点号查找i节点,然后使用i节点中的信息访问文件即可。
链接:文件名和i节点之间的连接。
从概念上讲,链接将文件名和文件本身连接起来。这也是i节点不包含文件名的原因。
一个文件可以有不止一个名称。
文件的唯一标识符是其i节点号,而不是它的名称。
因此,多个文件名称可以引用同一个i节点号。
链接的基本想法是同一个文件可能拥有不同的含义(取决于文件使用的环境)。
链接是基本文件操作cp,mv,rm,ln的基础。
系统平等地对待所有的链接。
文件不由它们的名称或位置控制,而只受所有权和权限控制。
每当创建文件时,文件系统就会自动在文件名和i节点间创建一个链接。
当希望为已有文件创建一个新链接时,使用ln(link)命令。
ln file newname
为单个文件创建新链接。
file是文件的已有名称,newname是希望赋予链接的新名称。
ln file... firectory
为一个或多个普通文件创建新链接,并将新链接放在指定的目录中。
file是文件的名称,directory是希望放置新链接的目录名称。
ps:
这里的文件名称均指文件的路径名,即在目录树中的定位。
通过移除目录条目,消除文件名和i节点号之间的连接。
如果文件已经没有链接,删除该文件。
上文中讨论的链接类型允许我们为同一个文件指定不止一个名称。
但是有两个限制:
1. 不能为目录创建链接
2. 不能为不同文件系统中的文件创建链接
符号链接:包含的不是文件的i节点号,而是源文件的路径名。可以创建不同文件系统中的目录或文件的链接。
用ln -s 创建。
符号链接文件的文件类型指示符为l
文件只有4个字节长,仅能容下实际文件的路径名。该文件是一个符号链接,而不是一个只有4个字符的普通文件,这一事实在该文件的i节点中注明。
硬链接:常规的链接
软链接:符号链接
使用ls -l时显示的链接数是硬链接的数量。