建立软链接
ln -s 文件名 软链接名
例如: ln -s log.txt log_soft
删除软链接
方法1:rm 删除
方法2:(推荐) ulink 软链接名
例如: ulink log_soft
例子:
什么时候会用到软链接呢?
对于一些执行路径很深的程序,我们可以通过软链接快速找到它
例子:
如果我们回到link目录下,还想运行test.sh
,就要逐层进入去执行,非常的麻烦! 此时我们可以通过建立软链接的方式来快速达到目的
这个相当于是windows下的 创建快捷方式
软链接文件的inode号与源文件的inode号是不同的 ,软链接文件相对于源文件来说是一个独立的文件,该文件有自己的inode号,但是该文件只包含了源文件的路径名,所以软链接文件的大小要比源文件小得多
注意:软链接文件只是其源文件的一个标记,当删除了源文件后,链接文件不能独立存在,虽然仍保留文件名,但却不能执行或是查看软链接的内容了
建立硬链接
ln 文件名 硬链接名
例子:ln log.c log_hard
我们可以发现,软链接由自己独立的inode 即: 软链接是一个独立的文件,他有自己的inode,也有自己的数据块block,数据块中保存的是它所指向的文件的路径+文件名
而硬链接没有独立的inode,不是一个独立的文件, 本质是在特定的目录下,添加一个 文件名和inode编号的映射关系
什么是链接数?
链接数指的是硬链接数,即有几个文件指向这个inode
硬链接文件就是源文件的一个别名,一个文件有几个文件名,该文件的硬链接数就是几
这个数字存在于inode结构体当中, 建立硬链接就是对ref++ 删除某文件就是对ref-- 当ref == 0的时候,这个文件才真正被干掉, 这其实就是引用计数的思想
与软连接不同的是,当硬链接的源文件被删除后,硬链接文件仍能正常执行,只是文件的链接数减少了一个,因为此时该文件的文件名少了一个
struct inode
{//数据int inode_num;int blocks[32];int ref;
};
什么时候会用硬链接
硬链接就是让多个不在或者同在一个目录下的文件名,同时能够修改同一个文件,其中一个修改后,所有与其有硬链接的文件都一起修改了
当我们最初创建一个文件的时候,其硬连接数是1, 然而当我们创建一个目录,默认的硬链接数是2,这是为什么呢?
因为我们在目录下有两个隐藏文件, 其中这个.
就是和我们此时的dir目录对应的inode是同一个! 所以我们之前就说过, .
表示当前目录 ,这也是硬链接最直观的应用场景
此时我们发现,如果我们在dir目录中再创建一个目录childDir,就发现dir的硬链接数由2变为3 ,这又是为什么呢?
..
也是dir目录的硬链接
上一篇:动态规划 背包问题