0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Linux中的符号链接如何创建

dyquk4xk2p3d 来源:良许Linux 2023-02-11 10:12 次阅读


什么是 Linux 中的符号链接,为什么要使用它? 符号链接 Symbolic Links,也称为 Symlinks 或 soft link,是一种特殊类型的文件,它就像 Windows 中的快捷方式一样简单地指向另一个文件或目录。创建符号链接就像创建一个实际文件的别名。 如果您尝试访问符号链接,您实际上访问的是符号链接指向的目标文件。对链接文件内容所做的更改会更改实际目标文件的内容。 如果使用带选项 -l 的 ls 命令,符号链接如下所示:

lrwxrwxrwx 1 linuxmi linuxmi     11  2月 1日 18:58 linuxmi.md -> linuxmi.dat
在大多数 Linux 发行版中,链接以与其余条目不同的颜色显示,以便您可以将链接与常规文件和目录区分开来。

23019bae-a980-11ed-bfe3-dac502259ad0.png


符号链接提供了一种组织和共享文件的便捷方式。它们提供对长而混乱的目录路径的快速访问。它们在 Linux 中大量用于链接库。 现在您对符号链接有了一些了解,让我们看看如何创建它们。

如何在 Linux 中创建符号链接

要从 link name 创建指向目标文件的符号链接,您可以使用带有 -s 选项的 ln 命令,如下所示:


ln -s target_file link_name
-s 选项在这里很重要。判断该链接为软链接。如果你不使用它,它会创建一个硬链接。我将在另一篇文章中解释软链接和硬链接之间的区别。

如何跟踪符号链接

要知道链接实际指向哪个真实文件,请使用 realpath 命令:


realpath link_name
还有其他方法可以跟踪到其源文件的软链接,但 realpath 是最简单的。

2326357c-a980-11ed-bfe3-dac502259ad0.png

如何删除符号链接

Linux中没有删除符号链接的特殊命令。您可以使用与删除文件和目录相同的 rm 命令。


rm link_name

233dbb98-a980-11ed-bfe3-dac502259ad0.png


删除链接不会删除它链接到的源文件。 您也可以在一个命令中删除多个符号链接:

rm link1 link2
还有一个unlink 命令。但与名字给人的印象不同,unlink 命令并不是专门用来删除链接的。当然,它可以删除文件、文件夹和链接。但是,它有某些限制,即使是删除链接,rm 命令也是更好的选择。 如果要使用 find 命令列出符号链接,可以使用该-type l选项。

关于符号链接的注意事项

符号链接有时可能会造成混淆,因此您应该注意一些事项。

对链接所做的更改反映在原始文件中

毕竟,这就是链接的全部目的。您可以通过访问链接来访问目标文件。您可以通过链接对目标文件进行更改。让我们看例子。 我在 newdir/test_dir 中有一个文件 prog.py。它具有以下属性:

-rw-r--r-- 1 linuxmi linuxmi 1926  2月 1日 19:08 /home/linuxmi/linuxmi.com/linuxmi/linuxmi.py
现在,我将在当前目录中创建指向该文件的软链接:

┌──(linuxmi㉿linuxmi)-[~]
└─$ ln -s /home/linuxmi/linuxmi.com/linuxmi/linuxmi.py test

2352beee-a980-11ed-bfe3-dac502259ad0.png

以下是新创建链接的属性:
lrwxrwxrwx 1 linuxmi linuxmi     44  2月 1日 19:24 test -> /home/linuxmi/linuxmi.com/linuxmi/linuxmi.py

23675976-a980-11ed-bfe3-dac502259ad0.png

注意到行首的l(是 L,不是一 1)了吗?如果你熟悉 Linux 中的文件权限,你就会知道'l'表示链接,因此它告诉你这个文件实际上是一个链接。提个醒,- 表示文件,d 表示目录。 现在,如果我使用此链接更改内容或属性,同样会反映在目标文件中。例如,我在软链接上使用 touch 命令,你会注意到它改变了目标文件的时间戳。
┌──(linuxmi㉿linuxmi)-[~/linuxmi]
└─$ touch test
                                                                           
┌──(linuxmi㉿linuxmi)-[~/linuxmi]
└─$ ls -l /home/linuxmi/linuxmi.com/linuxmi/linuxmi.py
-rw-r--r-- 1 linuxmi linuxmi 1926  2月 1日 19:27 /home/linuxmi/linuxmi.com/linuxmi/linuxmi.py

238623e2-a980-11ed-bfe3-dac502259ad0.png

它链接到文件还是目录?你可能不知道!

您如何知道链接指向的是文件还是目录?在您按照路径访问目标文件本身之前,您无法知道这一点。

您可以创建指向不存在的文件或目录的链接

是的,这完全有可能。这就是为什么在 Linux 中创建软链接时应该小心的原因。您链接到的目标文件不需要存在。创建指向不存在的文件/目录的链接时,您不会收到任何错误或警告。 ls 命令仍然有效。仅当您尝试通过链接或单独访问目标文件时才会出现错误。


┌──(linuxmi㉿linuxmi)-[~/linuxmi]
└─$ ln -s non_existant_dir link_dir
                                                                           
┌──(linuxmi㉿linuxmi)-[~/linuxmi]
└─$ less link_dir
link_dir: 没有那个文件或目录

239ca5c2-a980-11ed-bfe3-dac502259ad0.png

符号链接是使用 777 权限创建的,但它没有任何意义

您是否注意到符号链接上的文件权限?符号链接始终使用 777 权限 (rwxrwxrwx) 创建。对于常规文件,这意味着任何人都可以访问该文件。但链接并非如此。

lrwxrwxrwx 1 linuxmi linuxmi 11 2月 1日 18:58 linuxmi.md -> linuxmi.dat
如果链接上的文件权限按原样处理,任何用户都可以创建指向安全文件的符号链接并自由访问它。那将是一个主要的安全问题。值得庆幸的是,这不会发生。因为目标文件的权限很重要,而不是链接的权限。
您可以使用 chmod 命令更改链接的权限,但它会更改链接文件的权限,而不是链接本身。

您可以链接到一个链接的链接,也就是链式符号链接

您可以创建指向另一个链接的符号链接等等。这称为链式符号链接。最好避免使用它们,因为它会造成更多混乱。 嗯,就是这样。我假设您现在对软链接有了更好的了解,并且您知道如何在 Linux 中创建符号链接。您也可以查看 symlinks 命令,它可以帮助您在 Linux 中找到损坏的符号链接并轻松管理它们。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    11219

    浏览量

    208872
  • 符号
    +关注

    关注

    0

    文章

    55

    浏览量

    4313

原文标题:如何在 Linux 中创建符号链接 [完整指南]

文章出处:【微信号:良许Linux,微信公众号:良许Linux】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    一文弄懂Linux链接和软链接

    Linux系统下,有两种链接文件:一种是硬链接(Hard Link);另一种是软链接,也称为符号链接
    发表于 10-21 14:26 1332次阅读

    Linux系统如何删除软链接

    Linux符号链接(symbolic link,或者symlink)也称为软链接,是一种特殊类型的文件,用作指向另一个文件的快捷方式。
    发表于 10-28 09:14 7439次阅读

    Linux驱动创建procfs接口的方法

    上篇介绍了Linux驱动sysfs接口的创建,今天介绍procfs接口的创建
    发表于 05-31 16:48 715次阅读
    <b class='flag-5'>Linux</b>驱动<b class='flag-5'>中</b><b class='flag-5'>创建</b>procfs接口的方法

    Linux基础】Linux链接简介

    添加一个硬链接,文件的链接数就加1。  硬链接文件有两个限制  1)、不允许给目录创建链接;  2)、只有在同一文件系统
    发表于 09-20 15:47

    Linux基础】Linux链接简介

      一、Linux链接简介  Linux的软链接(symbolic link)又叫符号连接,相当于Windows下的快捷方式。  
    发表于 09-20 15:50

    linux下软链接和硬链接的区别

    linux系统链接分两种 :一种被称为硬链接(Hard Link),另一种被称为符号链接
    发表于 11-15 16:26

    怎样在rt-thread目录下创建多个目录符号链接

    可以用Win10带的mklink程序来创建目录的符号链接,这样就指向了rt-thread github目录了。但整体情况不适合直接创建一个rt-thread目录
    发表于 03-17 10:02

    Linux系统下的链接原理是什么?有哪些应用呢

    使用-fPIC 选项,还需要使用 -shared 选项,该选项将位置无关的代码制作为动态库。创建动态库的方法如下 动态库的使用为了使应用程序可以正确的引用该库的全局符号,需要制作一个包含该动态库文件
    发表于 06-21 17:05

    在RT-Thread目录下创建多个目录符号链接

    可以用Win10带的mklink程序来创建目录的符号链接,这样就指向了rt-thread github目录了。但整体情况不适合直接创建一个rt-thread目录
    发表于 09-06 14:36

    STM32MP151C构建Custom Board“Eco system V2.1.0”发行版时存在不创建devicetree符号链接怎么解决?

    大家好基于STM32MP151C芯片构建Custom Board“Eco system V2.1.0”发行版时,存在不创建devicetree符号链接的问题。自定义板设备树的符号
    发表于 01-12 07:05

    你知道Linux软连接和硬链接

    Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln命令产生硬
    发表于 04-25 18:00 1675次阅读

    Linux命令链接操作符的实际应用

    Linux命令链接的意思是,通过操作符的行为将几个命令组合执行。Linux链接命令,有些
    发表于 05-06 17:44 830次阅读

    Linux的软链接、硬链接都用在哪些场合?

    最近,看到很多文章都在介绍 Linux 的文件系统,其中就包括:inode 节点、软链接、硬链接等重要的概念。 于是就有小伙伴私信问我:这些概念我都懂,但是我能利用他们来完成什么工作
    的头像 发表于 06-21 16:33 1650次阅读

    如何使用Linux ln命令以及如何创建符号链接

    你可能知道windows的系统有个叫快捷方式的文件,当你为一个文件或者目录创建快捷方式时,无论你将快捷方式放在哪里,都会打开原来的那个文件或者目录。
    的头像 发表于 12-09 17:42 2226次阅读

    如何在Linux查找断开的符号链接

    在之前的文章,我们解释了什么是 Linux 符号链接符号
    的头像 发表于 02-06 18:23 1608次阅读