Linux之链接
简单介绍与Linux链接有关的概念与操作
索引节点
在Linux中,所有的文件都有一个索引节点(index node) 来存储使用文件所需的全部文件系统的信息,如文件地址、权限、文件大小、修改时间等。索引节点又称i节点(Inode),文件系统将所有的i节点都存放在i节点表中,每个i节点都有一个i节点号,查看文件的i节点信息可以使用如下命令
stat filename
目录中并不包含文件,而是只包含文件名和文件的i节点号
当我们在a目录下创建file文件时,大致步骤如下
- 在硬盘上保留存放该文件的空间
- 查看i节点表,找到一个空闲的i节点
- 将文件的信息填写到i节点中
- 在a目录中添加一个条目,包含文件名和i节点号
当我们要使用file文件时,只需要使用i节点号去查找i节点,再通过i节点访问文件即可。
文件名与i节点之间的连接就称为链接,一个i节点可以有多个链接,有多个文件名
创建链接ln
每当创建文件时,系统都会自动创建一个链接,如果你希望再要一个,可以使用ln命令
ln file newfile
例如
ln temp temp2
此时当前目录下就会多出来一个文件名temp2,但实际上它和temp指向的是同一个文件,因此修改temp2,temp也会修改。
使用ls -l
可以查看文件的链接数量,在权限的右边
使用ls -i
可以查看文件的i节点号
这种链接也称为硬链接
符号链接
符号链接也称为软链接。
硬链接有两个缺点,不能为目录创建链接,不能为不同文件系统的文件创建链接。为了解决这两个问题,可以使用符号链接,也就是软链接。
符号链接是通过路径来查找文件的,所以当访问符号链接时,都会通过路径去找真实的文件,类似于windows的快捷方式。
创建软链接可以使用ln -s
命令,语法如下
ln -s file newfile
例如
ln -s blank blank2
使用ls -l
查看符号链接时,示例如下
lrwxrwxrwx. 1 root root 7 Oct 21 10:28 bin -> usr/bin
其中,第一个字母为l
,表示是个符号链接。最右边则显示链接,bin链接到usr/bin。表示当访问bin时,实际上访问的是user/bin
在符号链接目录中使用cd和pwd
对于上面的符号链接目录bin -> usr/bin
当我们使用cd
进入bin时,默认情况下,cd
会将bin为真实的目录,看起来好像我们真的bin中一样,实际上我们操作的都是usr/bin。
当我们使用cd -P
(physical,物理)进入bin时,我们将跳到实际的目录usr/bin中。
对于pwd
也是类似的,当我们使用cd bin
后,默认情况下,pwd
将bin视为真实的目录,打印bin的路径。
当我们使用pwd -P
,则打印bin实际目录的路径,也就是usr/bin
。