linux命令-ln命令详解

文章目录

  • 前言
  • 一、ln命令介绍
    • 1. 简介
    • 2. 硬链接
      • 2.1 inode介绍
    • 3. 软连接(符号链接)
    • 4. 语法
    • 5. 选项和参数
  • 二、示例用法
    • 1. 创建硬链接
    • 2. 创建软链接
      • 2.1 给文件创建软链接
      • 2.2 给目录创建软链接
  • 总结


前言

本文介绍了ln命令的用法和特点,包括硬链接和符号(软)连接的区别,以及inode概念及其在文件系统中的作用。通过示例演示了如何创建硬链接和软链接,并说明了它们在不同场景下的应用。


一、ln命令介绍

1. 简介

ln命令是用于创建链接(link)的工具。它可以创建硬链接和符号链接(软链接),这两种类型的链接都可以将一个文件或目录与另一个位置关联起来。

2. 硬链接

  • 硬链接是指多个文件名指向同一个物理存储位置的文件副本。换句话说,它们共享相同的inode和数据块。
  • 硬链对应用程序来说是透明的,它们看起来像独立文件。无论通过哪个硬连接修改了内容,在其他所有相关联的硬连接上都会反映出该更改。
  • 删除原始文件并不会影响已经存在的硬链。只有当所有关联到该inode上面没有任何引用时才真正删除。

2.1 inode介绍

inode(Index Node)是文件系统中的一个概念,用于存储关于文件或目录的元数据信息。每个文件和目录在文件系统中都有一个唯一的inode。

以下是关于inode的一些重要概念和特点:

  1. 唯一标识:每个inode都有一个唯一标识符(通常是整数),用来区分不同的inodes。

  2. 元数据信息:每个inode包含了与其相关联的文件或目录的元数据,如:

    • 文件类型(普通文件、目录、符号链接等)
    • 权限模式和所有者
    • 文件大小
    • 创建时间、修改时间和访问时间等时间戳
    • 数据块指针/索引
  3. 存储位置:操作系统维护着一个称为"索引节点表"(Inode Table) 的结构,其中保存了所有存在于该文件系统上面创建好后使用过程当中所产生出来之 inode 。
    当我们创建新文档时, 操作系会从空闲列表上面找到第1 项并且将它们分配给新建立起来之文档。然后为这些 inodes 分配独特编号,并将它们添加到索引节点表以进行跟踪.

  4. 硬链接关系: 如果多个硬连接指向相同 inode,则它们共享相同内容,并且对任何硬连接所做更改也会反映在其他硬连接上。

  5. 文件系统性能:inode的使用对文件系统的性能和效率有一定影响。较大的inode表可以存储更多文件和目录,但可能导致内存占用增加。因此,在设计文件系统时需要平衡存储空间和性能需求。

  6. 删除与回收:当删除一个文件或目录时,操作系统将释放与该inode相关联的磁盘空间,并将该inode标记为可重用状态以供后续创建新文件使用。

    • 硬链接: 只有当所有关联到该 inode 上面没有任何引用才真正删除.
    • 软连接: 如果源路径被删除,则符号(软)链仍然存在,但访问它会失败.

3. 软连接(符号链接)

  • 软连接是一种特殊类型的文件,其中包含源路径或目标路径信息。它类似于Windows中快捷方式或Mac OS中别名。

  • 符号(软)链接实际上只是一个文本字符串,其中包含指向目标位置(源路径)所需信息,并且与其关联名称具有不同inode值。

    • 源路径可以是绝对路径或相对于生成符号(软)连结处而言之
    • 目标必须为绝对路劲

    当访问一个符号(soft link)时, 文件系统首先检查是否正在请求打开/读取/执行等操作, 如果是, 则会自动解引用符号链接,然后使用目标路径。

  • 删除源路径或目标文件不会影响符号(软)链本身。但如果删除了源文件或目录,则访问该符号链接将失败。

选择硬链接还是软连接的考虑因素

  • 硬链接只能指向同一文件系统中的现有文件,并且不能跨越分区或设备。而软连接没有这个限制。
  • 软连接可以指向目录,而硬链接只能指向一个具体的文件。
  • 如果需要在不同位置共享相同内容的多个副本,并且希望对所有副本进行更改时都反映出来,则应使用硬链。
    • 例如,在多个用户之间共享可执行程序时,可以使用硬链确保任何人对程序所做的更改都会反映到其他人看到(前提是他们有适当权限)。

4. 语法

# 创建一个到目标的链接,名称为链接名
ln [选项]... [-T] 目标 链接名
# 在当前目录中创建一个到目标的链接
ln [选项]... 目标
# 在目录中创建指向每个目标的链接
ln [选项]... 目标... 目录
ln [选项]... -t 目录 目标...

默认情况下,使用–symbolic创建硬链接。
默认情况下,每个目的地(新链接的名称)不应该已经存在。
创建硬链接时,每个目标必须存在。符号链接可以保存任意文本;如果稍后解析,相对链接将根据其父目录进行解释。

5. 选项和参数

  • --backup[=CONTROL] : 为每个已存在的目标文件创建备份文件
  • -b: 类似–backup,但不接受任何参数
  • -d, -F, --directory : 创建指向目录的硬链接(只适用于超级用户)
  • -f, --force: 强行删除任何已存在的目标文件
  • -i, --interactive: 提示是否删除目的地
  • -L, --logical: 解引用的目标是符号链接
  • -n, --no-dereference: 将链接名视为普通文件,它是指向目录的符号链接
  • -P, --physical: 将硬链接直接设置为符号链接
  • -r, --relative: 创建相对于链接位置的符号链接
  • -s, --symbolic: 用符号链接代替硬链接
  • -S, --suffix=SUFFIX : 覆盖通常的备份后缀
  • -t, --target-directory=DIRECTORY : 指定在其中创建链接的DIRECTORY
  • -T, --no-target-directory: 始终将LINK_NAME视为普通文件
  • -v, --verbose: 打印每个链接文件的名称
  • --help: 显示此帮助信息并退出
  • --version: 显示版本信息并退出

二、示例用法

1. 创建硬链接

touch demo1.txt
echo hello >> demo1.txt
cat demo1.txt
ln demo1.txt demo2.txt
cat demo2.txt
rm -f demo1.txt
cat demo2.txt

硬链接是指多个文件名指向同一个物理存储位置的文件副本。换句话说,它们共享相同的inode和数据块。所以删除了demo1.txt,demo2.txt还可以看到其内容,如下图所示。

在这里插入图片描述

2. 创建软链接

2.1 给文件创建软链接

touch demo1.txt
echo hello >> demo1.txt
cat demo1.txt
ln -s demo1.txt demo2.txt
cat demo2.txt
rm -f demo1.txt
cat demo2.txt

可以看到删除了demo1.txt,demo2.txt不能看到其内容,如下图所示。

在这里插入图片描述

2.2 给目录创建软链接

该命令会在/home目录下创建一个myusr的软连接,该软连接指向/usr目录。

ln -s /usr /home/myusr

查看/home/myusr目录下的文件和目录和/usr是一样的,/home/myusr相当于/usr的快捷方式,删除/home/myusr并不会影响/usr,但是删除/usr,就不能访问/home/myusr目录。

在这里插入图片描述


总结

通过本文我们学习了ln命令是如何创建硬链接和符号(软)连接的,并深入探讨了它们之间的区别与适用场景。我们知道,硬链可以共享相同内容并反映对任意一个副本所做更改;而软链则提供灵活性与跨分区设备功能。选择合适类型连接取决于需求,在实际使用中要根据情况权衡利弊来进行选择。

希望本教程对您有所帮助!如有任何疑问或问题,请随时在评论区留言。感谢阅读!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/773623.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【TypeScript】解决字面量类型推断错误的四种方式

解决字面量类型推断错误的四种方式 方式一:对象属性使用类型断言方式二:传参使用类型断言方式三:对象使用类型断言方式四:对象属性使用变量,变量使用字面量类型参考 declare function handleRequest(url: string, meth…

[蓝桥杯 2022 省 A] 求和

[蓝桥杯 2022 省 A] 求和 题目描述 给定 n n n 个整数 a 1 , a 2 , ⋯ , a n a_{1}, a_{2}, \cdots, a_{n} a1​,a2​,⋯,an​, 求它们两两相乘再相加的和,即 S a 1 ⋅ a 2 a 1 ⋅ a 3 ⋯ a 1 ⋅ a n a 2 ⋅ a 3 ⋯ a n − 2 ⋅ a n − 1 a n − 2 ⋅ a…

linux 网卡配置 vlan/bond/bridge/macvlan/ipvlan 模式

linux 网卡模式 linux网卡支持非vlan模式、vlan模式、bond模式、bridge模式,macvlan模式、ipvlan模式等,下面介绍交换机端及服务器端配置示例。 前置要求: 准备一台物理交换机,以 H3C S5130 三层交换机为例准备一台物理服务器&…

AD域---共享文件夹-容量配额管理

域环境共享文件夹-容量配额管理 要求 1/李斯用户配额10G云盘空间,张珊用户配额30G云盘空间 2/D:\ 配额-启用配额-启用配额管理-拒绝将磁盘空间给超过配额限制的用户-勾选 3/将磁盘空间限制为:55GB,将警告等级设为50GB 4/选择该卷的配额记录选项-勾选…

大型集团公司企业文化知识竞活动赛策划方案

一场高端企业文化知识竞赛活动完整策划书,按诗词大会舞美标准进行设计,竞赛规则新颖,值得收藏。 天纵高端知识竞赛服务商,20多年现场经验和软硬件开发。 专业承办全国高端知识竞赛活动。线上线下各类竞赛活动均可执行,…

鸿蒙开发之了解ArkTS

鸿蒙开发者官网 : https://developer.huawei.com/consumer/cn/ 开发鸿蒙要用的软件是 DevEco Studio ArkTS建立在JS和TS的基础之上,扩展了声明式UI开发范式和状态管理,提供更简洁和自然的开发方式。 ArkTS引入了渲染引擎的增强&#xff0c…

04. 【Android教程】Android 工程解析及使用

在上一章中已经搭建好了 Android 开发环境,本章我们将一起通过 Eclipse 创建我们的第一个 Android App。 1. 创建 Android 工程 首先打开 Eclipse,在菜单栏依次选择“New” -> “Android App Project”。如果是第一次创建,可能没有“Andr…

ChatGPT,来一份3·28雷布斯米时捷上市发布会即时发言稿

你新招了一个秘书。上班第一天,你对他说:“3月28号我可能会受邀参加雷老板的米时捷’上市发布会,届时我可能会有十分钟的发言机会,你现在准备一篇演讲稿。” 秘书问你有何指导意见? 你自己都不知说啥子,能…

gcc任意版本安装流程(linux)

一.更换镜像源 仅仅针对有需要换镜像需求的用户 sudo gedit /etc/apt/sources.list 用于在基于Debian的Linux发行版(如Ubuntu)上用来编辑软件源列表的命令。 我们更换阿里源: deb http://mirrors.aliyun.com/ubuntu/ focal main restricted…

fl studio21.2中文版下载及使用基础教学

FL Studio 21.2.2是一款功能强大的音乐制作软件,也被广大用户称为“水果编曲”。这款软件支持简体中文和英语,适用于Windows 10/11(仅限64位)以及MacOS 10.13.6或更高版本的系统。 在FL Studio 21.2.2中,用户可以享受…

AI论文速读 | 【综述】用于轨迹数据管理和挖掘的深度学习:综述与展望

论文标题:Deep Learning for Trajectory Data Management and Mining: A Survey and Beyond 作者:Wei Chen(陈伟), Yuxuan Liang(梁宇轩), Yuanshao Zhu, Yanchuan Chang, Kang Luo, Haomin Wen(温皓珉), Lei Li, Yanwei Yu(于彦伟), Qingsong Wen(文青…

【PADS 原理图Logic发送网表元器件丢失的解决办法】

1、PADS版本:VX1.2 2、PADS Logic原理图导入PCB Layout后,发现总有几个元器件怎么导都不会显示在PADS Layout上,如下图: PADS Logic上也选择了封装,还是不行,如下图: 3、解决办法: …

深入了解 Postman 请求头的使用方法

当你在使用 Postman 发送请求时,请求头(Headers)是你可以包含在 HTTP 请求中的重要部分之一。请求头包含了关于请求的元数据信息,这些信息对于服务器来处理请求是非常重要的。下面是一份详细的图文介绍,说明了如何在 P…

电源模块 YULIN俞霖科技DC/DC电源模块 直流升压 高压稳压

Features 最低工作电压:0.7V电压隔离:1000VDC /3000VDC 平均无故障时间: > 800,000 小时短路与电弧保护无最低负载要求:可空载工作输入电压:5、12、15、24VDCOutput 100,200、300、400、500 、600、800、 1000、1…

特征工程 | 特征选择、特征降维

目录 一. 特征选择1. 方差选择法2. 相关系数法3. 卡方检验 二. 特征降维1. LDA(线性判别分析法)2. PCA(主成分析法) 一. 特征选择 特征选择的目的是从原有特征中找出主要特征,原始特征可能包含冗余或无关变量(或称特征、属性、指标等) 手工 …

门店稽查的主要涵盖范围

先有需求再有目标,门店稽查也是如此,当品牌有线下终端的查价、上架率、竞品调研等的需求,则需要安排神秘访员进行上门稽查,整个过程可以分为明访和暗访,稽查方式的不同,对于稽查的结果会有差异,…

[深度学习]yolov8+pyqt5搭建精美界面GUI设计源码实现五

【简单介绍】 依托先进的目标检测算法YOLOv8与灵活的PyQt5界面开发框架,我们倾力打造出了一款集直观、易用与功能强大于一体的目标检测GUI界面软件。通过深度融合YOLOv8在目标识别领域的出色性能与PyQt5的精美界面设计,我们成功推出了一款高效且稳定的软…

电脑开机0x0000007B蓝屏怎么办?

电脑开机0x0000007B蓝屏怎么办啊?相信很多用户的电脑都有遇到过蓝屏的问题,最近有用户电脑一开机就蓝屏,并且显示0x0000007B错误代码,原本想通过安全模式进行修复,结果发现安全模式进不去,不知道该怎么解决。这可能与我们的内存或硬盘有关,尝试设置一下硬盘模式,看看是…

R语言随机抽取数据,并作两组数据间t检验,并保存抽取的数据,并绘制boxplot

前提:接着上述R脚本输出的seed结果来选择应该使用哪个seed比较合理,上个R脚本名字: “5utr_计算ABD中Ge1和Lt1的个数和均值以及按照TE个数小的进行随机100次抽样.R” 1.输入数据:“5utr-5d做ABD中有RG4和没有RG4的TE之间的T检验.c…

基于51单片机的智能晾衣架设计资料(论文+源码+仿真)

目录 1、资料内容 2、整体架构流程 3、主控单元设计 4、LCD液晶显示 5、仿真图 6、程序 资料下载地址:基于51单片机的智能晾衣架设计资料(论文源码仿真) 1、资料内容 2、整体架构流程 为了实现晾衣自身能够完成对外界数据的采集与分析,集成控制环节我们采…