为学习pnpm了解一点基础:软链接和硬链接

简介: 硬链接(hard link)对一个文件进行修改,可能会影响到其他文件的内容,但是删除一个文件名,并不会影响其他文件名的访问。

image.png


大家好,我是 那个曾经的少年回来了。10年前我也曾经年轻过,如今已步入被淘汰的年龄,但如下幡然醒悟,所以活在当下,每天努力一点点,来看看2024年的时候自己会是什么样子吧,2024年的前端又会是什么样子,而2024年的中国乃至全球又会变成什么样子,如果你也有想法,那还不赶紧行动起来。期待是美好的,但是更重要的是要为美好而为之奋斗付诸于行动。


关于Inode详细解释我昨天整理了一点,有兴趣的可以了解一下:juejin.cn/post/713172…


1、硬链接与软链接的定义


硬链接(hard link)对一个文件进行修改,可能会影响到其他文件的内容,但是删除一个文件名,并不会影响其他文件名的访问。


软链接又可以说成是符号连接,它有点类似于Windows的快捷方式,实际上它是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。


以下操作:我都是在linux系统上进行操作的。


2、创建一个文件,并写入字符串


touch aehyok
echo "hello world"> aehyok
cat aehyok


image.png


通过截图可以发现,文件生成成功,内容字符串也写入了。


3、创建硬链接


创建一个指向aehyok文件的 硬链接hard-aehyok


ln aehyok aehyok-hard
cat aehyok-hard
ls -li


image.png


两个文件除了名字不一样,其他都是一样的


4、修改文件内容


echo "hard hello world" >>aehyok-hard
cat aehyok-hard
cat aehyok


image.png


修改硬链接文件中的内容之后,源文件中的内容也发生了变更


echo "aehyok hello world">> aehyok
cat aehyok
cat aehyok-hard


image.png


修改源文件之后,硬链接中的文件内容也同时发生了变更


原文件与硬链接文件互为硬链接


可以通过 stat xxx 命令来查看文件的inode信息


image.png


可以发现Inode为2502924,他的硬连接数为2。你也可以发现Inode信息中不包含文件名。对于系统来说,文件名只是inode号码便于识别的别称或者绰号。


5、创建软链接


ln -s aehyok aehyok-soft  
cat aehyok-soft
ls -li


image.png


可以发现软链接文件属性跟源文件和硬链接属性有区别的。而且有一个明显的指向,指向了原文件aehyok。


6、删除原文件


image.png


删除原文件之后,硬链接文件可以正常访问,但是访问软链接文件报错了。这里与我们开头总结的定义正好吻合了。


7、写入数据到软链接


echo "delete hello world" >> aehyok-soft
cat aehyok-soft
cat aehyok
ls -li


image.png


可以发现,写入软链接数据之后,原文件竟然出现了,但是里面的数据块inode是新的了,因为软链接文件中保存的是有引用原文件路径的,但是原文件已经不存在了。现在相当于根据路径重新生成并写入原文件。


8、总结


image.png


  • 硬链接不会创建额外 inode,它和源文件共用同一个 inode


  • 软链接会创建新的文件和 inode,但是软链接文件inode指向源文件的 inode


  • 建立硬链接时,源必须存在且只能是文件


  • 建立软链接时,源可以不存在而且可以是目录


  • 删除源文件不会影响硬链接文件的访问(因为inode还在)


  • 删除源文件会影响软链接文件的访问(因为指向的inode已经不存在了)
目录
相关文章
|
前端开发
【前端】elementUI表格根据状态显示不同的字体颜色
【前端】elementUI表格根据状态显示不同的字体颜色
686 1
|
关系型数据库 MySQL Linux
[玩转Linux] 安装部署Frp
[玩转Linux] 安装部署Frp
786 0
[玩转Linux] 安装部署Frp
|
存储 缓存 前端开发
利用 Webpack 5 的持久化缓存来提高构建效率
【10月更文挑战第23天】利用 Webpack 5 的持久化缓存是提高构建效率的有效手段。通过合理的配置和管理,我们可以充分发挥缓存的优势,为项目的构建和开发带来更大的便利和效率提升。你可以根据项目的实际情况,结合以上步骤和方法,进一步优化和完善利用持久化缓存的策略,以达到最佳的构建效果。同时,不断探索和实践新的方法和技术,以适应不断变化的前端开发环境和需求。
|
前端开发 JavaScript API
node事件循环中事件执行顺序
本文详细介绍了Node.js环境下的事件循环机制,包括其六个主要阶段:timers、I/O callbacks、idle, prepare、poll、check和close callbacks。文章通过具体代码示例解释了`setTimeout`、`setImmediate`和`process.nextTick`在事件循环中的执行顺序和区别。还探讨了在不同情况下(如I/O操作中)这些函数的执行顺序如何受到影响。最后,通过一个综合例子,展示了实际编码中事件循环的执行顺序。
239 1
node事件循环中事件执行顺序
|
存储 前端开发 JavaScript
新手也可以读懂的 React18 源码分析
打造全网最简单,新手也可以看懂的 React 18 源码分析系列。共同学习 React 设计思想,提升编码能力,轻松应对前端面试
495 0
新手也可以读懂的 React18 源码分析
|
存储 前端开发 算法
常见的前端加密方式有哪些?运用场景有哪些?
【4月更文挑战第12天】前端加密技术包括对称加密(如AES、DES)、非对称加密(如RSA)和Hash算法(如MD5、SHA-1)。对称加密用于本地数据加密、HTTPS通信,非对称加密常用于用户登录认证,Hash算法适用于数据完整性校验和密码存储。应用场景包括用户登录认证、敏感数据传输、文件加密和支付安全。加密技术结合访问控制、安全审计等措施,能提升数据和用户信息安全。
1692 9
|
编解码 前端开发 JavaScript
【长文慎入】一文吃透React SSR服务端同构渲染
前段时间一直在研究 react ssr技术,然后写了一个完整的 ssr开发骨架。今天写文,主要是把我的研究成果的精华内容整理落地,另外通过再次梳理希望发现更多优化的地方,也希望可以让更多的人少踩一些坑,让更多的人理解和掌握这个技术。 相信看过本文(前提是能对你的胃口,也能较好的消化吸收)你一定会对 react ssr服务端渲染技术有一个深入的理解,可以打造自己的脚手架,更可以用来改造自己的实际项目,当然这不仅限于 react ,其他框架都一样,毕竟原理都是相似的。
1733 0
|
JavaScript 开发者 索引
【亮剑】探讨了在TypeScript中为对象动态添加属性的三种方式
【4月更文挑战第30天】本文探讨了在TypeScript中为对象动态添加属性的三种方式:1) 使用索引签名允许添加任意属性,如`[key: string]: any`;2) 通过接口和类型别名提供编译时类型检查,例如`interface Person { name: string; age: number; }`;3) 利用类创建具有属性的对象,如`class Person { name: string; age: number; }`。每种方法有其适用场景,开发者可根据需求选择。
1330 0
|
小程序 Android开发 iOS开发
微信小程序设置为体验版需要打开调试模式
微信小程序设置为体验版需要打开调试模式
微信小程序设置为体验版需要打开调试模式