【Linux】软连接|硬链接|当前路径(.)|上级路径(..)|硬链接不能链接目录

目录

前言

软连接

​编辑

删除源文件

快捷应用 

总结

硬链接

硬链接为何不能链接目录 

 为什么软连接可以

软硬链接区别

当前路径(.)和上级路径(..)  

​编辑


前言

  • 在 Linux 中,文件的存储位置和数据(属性+内容)是由 inode 号来唯一标识的,而不是文件名。文件名主要是为了便于用户记忆和管理。系统和应用程序通过 inode 号来定位文件的数据块。基于这一点,我们可以更好地理解 Linux 中软链接和硬链接的概念,因为它们都是基于 inode 号来实现的。
  • 换句话说,inode 号是文件真正的唯一标识符,它指向文件的数据块。文件名仅仅是 inode 的一个引用,使得用户能够方便地访问这些文件。
  • 而软连接,硬连接连接是建立在inode上的;

软连接

将新的文件名关联到另外一个文件上,使得新的文件名也可以访问原文件;简单来说就是windows里面的快捷方式;

  • 软链接有自己的 inode,并且指向目标文件的 inode。
  • 如果目标文件被删除,软链接就会变成一个无效的链接,指向一个不存在的文件。
//建立软链接  -s代表soft
ln -s 源文件名 链接文件名
 
//删除软链接
rm 链接文件
或
unlink 链接文件

删除源文件

快捷应用 

当一个文件藏在深层次时,可以设置软连接(快捷方式)方便使用

 

总结

  • 软连接是一种特殊类型的文件,包含了另一个文件的路径信息,而不是直接指向源文件的文件数据inode;
  • 当源文件被移动或删除时,软连接会失效,此时称为是悬空链接;
  • 软连接可以跨文件系统,因为只保存了源文件的路径软链接包含的是另一个文件的路径,而不是直接指向文件数据的inode。

硬链接

指在文件系统中某个文件数据的指针,硬链接是文件数据的另一个名字;

  • 每个硬链接都是指向同一个inode的额外文件名(重命名);
  • 硬链接不创建新的inode,而是增加原有inode的链接计数(意味着不是一个独立的文件);
  • 删除硬链接中任何一个不会影响文件的内容,除非所有的硬链接被删除,计数为0(cnt),此时文件的内容才是真的被释放
ln 原文件名 硬链接文件名

当创建了一个硬链接文件后,该硬链接文件和原文件的硬链接数都变成了2 

硬链接为何不能链接目录 

如果允许对目录创建硬链接,则可能导致循环链接的情况。
例如,如果目录 A 有一个硬链接指向目录 B,同时目录 B 也有一个硬链接指向目录 A

  1. 创建目录A和B
  2. 在A目录下创建B的硬链接
  3. 在B目录下创建A的硬链接

导致产生以下目录结构:

        

A -> B -> A -> B -> ...

这显然是一个无限循环,在文件系统中是不可能接受的。

 为什么软连接可以

  • 由于软链接包含路径信息而不是直接指向 inode,因此即使创建了指向目录的软链接,也不会导致循环链接的问题。
  • 用户或程序可以通过解析软链接中的路径来访问目标目录。

假设有一个目录/home/user/dir,并且想要创建一个软连接到/home/user/test下,

ln -s /home/user/dir /home/user/test/my_dir

这里/home/user/test/my_dir是一个指向 /home/user/dir 的软链接。当你访问 /home/user/test/my_dir 时,系统会解析软链接中的路径,并让你能够访问 /home/user/dir/。

软硬链接区别

  • 软链接是一个独立的文件,有独立的 inode,而硬链接没有独立的 inode
  • 软链接相当于快捷方式,硬链接本质没有创建文件,只是建立了一个文件名和已有的 inode 的映射关系,并写入当前目录

当前路径(.)和上级路径(..)  

  • 当新建一个普通文件时,引用计数(硬链接数)是1,因为只有一个文件名和inode号对应;
  • 当建立一个目录时,引用计数是2,这是因为每个目录文件默认有当前路径(.)和上级路径(..)

(.)对应着当前目录文件,所以每个目录文件引用计数必是2,而在该目录文件下创建文件(仅直接父子关系)后,会增加引用计数,从而可判断该目录下有几个子目录

 

  • 11
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值