广告
返回顶部
首页 > 资讯 > 操作系统 >详解Linux ln 命令
  • 972
分享到

详解Linux ln 命令

linuxln命令 2022-06-04 22:06:45 972人浏览 八月长安
摘要

linux 中的文件分为 Hard Link 和 Symbolic Link 两种。Hard Link 文件又被称为硬链接文件、实体链接文件,Symbolic Link 文件则常被称为符号链接、软链接文件。 ln 命令用

linux 中的文件分为 Hard Link 和 Symbolic Link 两种。Hard Link 文件又被称为硬链接文件、实体链接文件,Symbolic Link 文件则常被称为符号链接、软链接文件。

ln 命令用来在文件之间建立链接。在介绍 ln 命令前,让我们先来搞清楚究竟什么是硬链接,什么又是软链接。

Hard Link(硬链接)

我们知道,在 Linux 系统中,每个文件对应一个 inode,文件的内容在存储在 inode 指向的 data block 中。要读取该文件的内容,需要通过文件所在的目录中记录的文件名找到文件的 inode 号,然后通过 inode 找到存储文件内容的 data block(参考《Linux 文件与目录》)。

也就是说,文件名存储在目录中,inode 号执行文件存储的内容,文件名和 inode 之间有一个对应关系。那么多个文件名可不可以同时指向同一个 inode 呢?答案是可以的,这就是硬链接!从本质上来说,硬链接只是在目录下新添加了一个文件名,这个文件名与一个已有文件的 inode 相关联。让我们也通过 /etc/crontab 文件来进行观察:


$ ll -i /etc/crontab
131213 -rw-r--r-- 1 root root 722 Nov 16 2017 /etc/crontab

使用 ln 命令在当前目录下创建一个 /etc/crontab 文件的硬链接,然后观察其文件属性:


$ sudo ln /etc/crontab .
$ ll -i /etc/crontab crontab
131213 -rw-r--r-- 2 root root 722 Nov 16 2017 crontab
131213 -rw-r--r-- 2 root root 722 Nov 16 2017 /etc/crontab

这两个文件名关联的 inode 号完全相同,都是 131213,所以它们指向的是同一个文件。同时请注意文件属性中的第三个字段,由 1 变成了 2。这个字段被称为 "链接数",它说明有多少个文件名链接到同一个文件的 inode。

另外需要注意的一点是上面所有输出中的第二个字段中的第一位,它们都是 "-",它说明这个文件的类型为普通文件,链接类型为硬链接。

我们可以通过下图来理解硬链接在文件系统中的实现方式:

硬链接的特点

  • 几乎不额外占用空间
  • 只要还有一个文件名引用着文件,文件就不会被真正删除

由于硬链接只是在目录中添加了一条包含文件名和 对应 inode 的记录,所以它几乎不会消耗额外的磁盘容量。
另外在删除硬链接所关联的文件时,其实只是删除了一条目录中的记录,真正的文件并不受影响。只有在删除最后一个硬链接时才会真正删除文件的内容数据。

硬链接的局限性

  • 不能跨文件系统创建硬链接
  • 不能链接目录

由于这两个限制,实际使用中硬链接并没有软链接使用的广泛,下面我们看看究竟什么是软链接。

Symbolic Link(软链接)

软链接的实现方式与硬链接有本质上的不同。创建软链接时会创建一个新的文件(分配一个 inode 和对应的 data block),新文件的 data block 中存储了目标文件的路径。
还拿 /etc/crontab 文件举例子,这次创建一个软链接并查看其文件属性:


$ sudo ln -s /etc/crontab crontab2

第一列,两个文件名对应的 inode 不同,说明这是两个文件。

第二列显示的文件权限也不一样,这一点和硬链接完全不同。注意文件类型被标记为 "l",说明这是一个软链接文件。

第三列很有意思,注意 /etc/crontab 文件的链接数量,还是 2,这和创建软链接文件 crontab2 前是一样的。也就是说创建软链接并不增加原文件的链接数。

第六列是文件大大小,注意新建的软链接文件大小为 12 Bytes,也就是字符串 "/etc/crontab" 的长度。

最后一列会友好的显示出软链接文件指向的源文件。

我们可以通过下图来理解软链接在文件系统中的实现方式:

从上图我们可以看出,软链接文件 crontab2 是一个实实在在的文件,有自己的 inode 和 data block。但是它的 data block 中保存的是目标文件的地址:/etc/crontab。 像 open() 这样的 api 能够识别出软链接,并根据 data block 中的目标文件径把操作重定向到目标文件上。

可以链接目录是软链接的一大优势,创建目录链接的方式和普通文件一样:


$ ln -s /bin testbin

此时进入 testbin 目录和进入 /bin 目录是一样的。

更厉害的是,还可以跨文件系统创建软链接!

删除源文件

对于软链接来说,删除源链接后,链接文件就会无法找到指向的源文件了。看下面的演示:


$ echo "hello world" > hello.txt
$ ln -s hello.txt hello2
$ cat hello2
hello world
$ rm hello.txt
$ cat hello2
cat: hello2: No such file or directory

删除原文件后,操作链接文件时的提示是:"No such file or directory"。

文件的链接数

从上文中的示例我们可以看到,当创建硬链接文件时,文件的链接数会增加 1,而创建软链接时文件的链接数却不发生变化。

下面让我们看一个目录文件的链接数,先创建一个空目录:


$ mkdir /home/nick/testdir
$ ll /home/nick | grep testdir
drwxr-xr-x 2 nick nick 4096 Jul 10 08:58 testdir/

新建的空目录有两个硬链接,分别是:


/home/nick/testdir
/home/nick/testdir/.

而 /home/nick/testdir 目录下还有一个指向其父目录的硬链接:/home/nick/testdir/..
也就是说当我们创建一个目录时,其父目录的硬链接数会增加 1。

ln 命令

ln 命令用来在文件之间建立链接,其的常用方式为:


ln source target
ln -s source target

它们分别用来创建硬链接文件和软链接文件。还有一个比较常用的选项是 f,它会强制删除已经存在的目标文件。

总结

以上所述是小编给大家介绍的Linux ln 命令,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

--结束END--

本文标题: 详解Linux ln 命令

本文链接: https://www.lsjlt.com/news/20487.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 详解Linux ln 命令
    linux 中的文件分为 Hard Link 和 Symbolic Link 两种。Hard Link 文件又被称为硬链接文件、实体链接文件,Symbolic Link 文件则常被称为符号链接、软链接文件。 ln 命令用...
    99+
    2022-06-04
    linux ln 命令
  • linux的ln命令使用参数详解
    本篇内容主要讲解“linux的ln命令使用参数详解”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“linux的ln命令使用参数详解”吧!这是linux中一个非常重要命令,请大家一定要熟悉。它的功能...
    99+
    2023-06-13
  • Linux ln 命令的使用
    1.命令简介 ln 命令用来为文件创建链接,分为硬链接(hard link)和软链接(符号链接,symbolic link)两种,默认创建硬连接,如果要创建软链接须使用 -s 选项。本文介绍的是 GNU 版本的实现,...
    99+
    2022-06-03
    Linux ln 命令 Linux ln Linux 命令
  • 一天一个shell命令 linux文件操作系列-ln命令详解
    里提示一下:ubuntu的翻译很多都是字面直译,存在很多问题,所以建议大家参照我这里的解释。当然本来也是有些赶文的嫌疑,望指正。 经常在linux上操作,有在不同的目录下切换某几个固定的命令,或者修改几个固...
    99+
    2022-06-04
    命令 详解 操作
  • Linux命令之ln -s命令(软链接)
    ln命令 Linux ln(英文全拼:link files)命令是一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同步的链接。 当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我...
    99+
    2023-12-23
    linux bash 服务器
  • linux中ln命令怎么用
    小编给大家分享一下linux中ln命令怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!全称ln 全称是link 顾名思义,这是一个建立一个链接。怎么去理解呢?...
    99+
    2023-06-09
  • Linux基础命令ln的用法
    本篇内容主要讲解“Linux基础命令ln的用法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux基础命令ln的用法”吧!ln为指定的目录或者文件创建链接,如果没有指定链接名,那么会创建一个...
    99+
    2023-06-06
  • Linux常用命令ln怎么用
    这篇文章给大家分享的是有关Linux常用命令ln怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Linux常用命令ln(英文全拼:link files)命令是一个非常重要命令,它的功能是为某一个文件在另外一个...
    99+
    2023-06-28
  • Linux的ln命令怎么使用
    这篇文章主要讲解了“Linux的ln命令怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux的ln命令怎么使用”吧!Linux常用命令ln命令 用来为文件创建链接,链接类型分为硬...
    99+
    2023-06-28
  • linux中的ln命令怎么用
    这篇文章主要为大家展示了“linux中的ln命令怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“linux中的ln命令怎么用”这篇文章吧。Linux ln 命令正如你现在所了解的,ln 命令...
    99+
    2023-06-16
  • 如何在Linux中应用ln 命令
    这期内容当中小编将会给大家带来有关如何在Linux中应用ln 命令,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。什么是Linux系统Linux是一种免费使用和自由传播的类UNIX操作系统,是一个基于POS...
    99+
    2023-06-09
  • 怎么在linux中使用ln命令
    本篇文章为大家展示了怎么在linux中使用ln命令,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1.命令格式: ln [参数][源文件或目录][目标文件或目录]2.命令功能:Linux文件...
    99+
    2023-06-13
  • Linux命令详解(14)useradd命令
    useradd用于添加一个linux账户。adduser跟本命令等价。 useradd同样属于不复杂但很重要的命令。 --help获得帮助信息。 -b选项,制定家目录的根  -c选项,给新用户添加说明信息 -d选项,给新用户设置家目录 ...
    99+
    2023-08-31
    linux 运维 服务器
  • Linux 命令之rsync命令详解
    rsync命令 rsync命令是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。rsync使用所谓的“rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的...
    99+
    2022-06-04
    命令 详解 Linux
  • Linux命令详解(15)lsof命令
    lsof 是 linux 下的一个非常实用的系统级的监控、诊断工具。它是 List Open Files的缩写。 使用 lsof,你可以获取任何被打开文件的各种信息,因为 lsof 需要访问核心内存和各种文件,所以必须以 root 用户的身...
    99+
    2023-09-02
    服务器 运维 lsof
  • Linux awk命令详解
    awk 文章目录 awkLinux三剑客grep 查找与匹配文本sed 文本编辑,处理匹配到的文本内容awk 格式化文本文件,对文本文件进行更复杂的加工处理分析 输出第二列内容输出多...
    99+
    2023-09-11
    linux 服务器 运维
  • Linux ping命令详解
    1.命令介绍 ping命令的功能是用于测试主机间网络连通性,发送出基于ICMP传输协议的数据包,要求对方主机予以回复,若对方主机的网络功能没有问题且防火墙放行流量,则就会回复该信息,我们也就可得知对方主机系统在线并运行正...
    99+
    2023-09-25
    网络 linux 服务器
  • Linux ssh 命令详解
    文章目录 ssh补充说明语法选项参数实例背后故事将 SSH 协议端口号设为 22 的故事如何更改 SSH 服务的端口号配置 SSH 协议穿越防火墙出站的 SSH 连接反向通道是有风险的入站的 ...
    99+
    2023-09-18
    ssh 服务器 运维
  • linux shutdown命令详解
    shutdown命令用来系统关机命令。shutdown指令可以关闭所有程序,并依用户的需要,进行重新开机或关机的动作。 语法 shutdown(选项)(参数) 选项 -c:当执行“shutdo...
    99+
    2022-06-04
    详解 命令 linux
  • linux mkdir命令详解
    mkdir命令用来创建目录。该命令创建由dirname命名的目录。如果在目录名的前面没有加任何路径名,则在当前目录下创建由dirname指定的目录;如果给出了一个已经存在的路径,将会在该目录下创建一个指定的...
    99+
    2022-06-04
    详解 命令 linux
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作