Linux 常用命令 - ln 【为文件创建链接】

简介

ln 命令来源于英文单词 “link”,意为“链接”。在 Linux 系统中,ln 命令用于创建文件的链接,包括硬链接和符号链接(软链接)。硬链接是对文件内容的直接指向,而符号链接则类似于 Windows 系统中的快捷方式,指向文件或目录的路径。

使用方式

ln [选项]... 链接对象 [链接名]

常用选项

  • --backup[=CONTROL]:在创建新的链接之前,若指定的链接文件存在,则对每个已经存在的链接文件进行备份。

  • -b:类似于 --backup 但不接受任何参数。

  • -d, -F, --directory:允许管理员(超级用户 root)尝试创建目录的硬链接。

  • -f, --force:创建链接时如果目标名称已被其他文件或链接占用,则删除已存在的文件或链接。

  • -i, --interactive:如果出现覆盖操作(如指定链接名已被其他文件占用),则在覆盖已有文件之前会先提示用户确认。

  • -L, --logical:解引用符号链接:如果指定的源文件是个符号链接,则 ln 命令会创建该符号链接所指向实际文件的链接,而不是创建指向符号链接本身的链接。

  • -P, --physical:如果指定的源文件是个符号链接,则创建链接时直接指向符号链接,而不是符号链接所指向的实际文件(区别于 -L)。

  • -n, --no-dereference:如果指定的链接名称已经存在,并且其是一个指向目录的符号链接,则 ln 命令会将其视为一个普通文件,而不是解引用成该符号链接所指向的目录。这意味着可以通过该选项对一个已存在的指向目录的符号链接进行更新或替换,而不是在这个符号链接所指向的目录中创建一个新的链接。

  • -r, --relative:创建符号链接时会自动计算并使用链接与目标文件的相对位置。这样,即使移动了符号链接和其目标(只要它们的相对位置不变),链接仍然有效。

  • -s, --symbolic:创建一个符号链接,而不是默认的硬链接。

  • -S, --suffix=SUFFIX:用 -b 参数备份目标文件后,备份文件的字尾会被加上一个备份字符串,预设的备份字符串是符号 ~,用户可通过 -S 参数来改变它。

  • -t, --target-directory=DIRECTORY:指定一个目录,在这个目录中创建链接。

  • -T, --no-target-directory:使用该选项后,如果指定的链接目标已经存在,ln 命令会预期这个目标是一个普通文件而不是目录,即使它实际上是一个目录(这时候 ln 会报错,而不是按原有的逻辑在这个目录中创建链接)。

  • -v, --verbose:显示详细的操作信息。

  • --help:显示帮助信息。

  • --version:显示版本信息。

参考示例

1. 创建指定名称的硬链接

ln a.txt a.txt.link

创建一个名为 a.txt.link 的硬链接指向 a.txt,创建完成后使用 ls 命令查看链接文件确认创建成功:

jay@jaylinuxlenovo:~/test$ ln a.txt a.txt.link
jay@jaylinuxlenovo:~/test$ ls -l a.txt.link 
-rw-rw-r-- 2 jay jay 13 Feb 20 21:27 a.txt.link

2. 创建硬链接到指定目录

 ln a.txt ln_test

ln_test 为一个目录名,首先使用 ls 命令查看 ln_test 目录下没有任何内容,接着使用 ln 命令在 ln_test 下创建一个硬链接,再次查看目录下内容确认创建成功:

jay@jaylinuxlenovo:~/test$ ls -l ln_test/
total 0
jay@jaylinuxlenovo:~/test$ ln a.txt ln_test
jay@jaylinuxlenovo:~/test$ ls -l ln_test/
total 4
-rw-rw-r-- 2 jay jay 13 Feb 20 21:27 a.txt

3. 创建符号链接

ln -s a.txt a.txt.slink

使用 -s 选项可以创建一个符号链接。此处创建了一个 a.txt.slink 的符号链接指向 a.txt,使用 ls 命令确认创建的符号链接信息:

jay@jaylinuxlenovo:~/test$ ln -s a.txt a.txt.slink
jay@jaylinuxlenovo:~/test$ ls -l a.txt.slink 
lrwxrwxrwx 1 jay jay 5 Feb 20 21:36 a.txt.slink -> a.txt

4. 强制创建符号链接

ln -sf test.txt a.txt.slink 

此处尝试创建一个 a.txt.slink 指向 test.txt 文件,但是由于上面的例子中我们已经创建了一个 a.txt.slink,所以直接创建会报错。此时我们使用 -f 选项强制创建,即可成功创建,并覆盖原来的 a.txt.slink ,此时该链接指向的是 test.txt 而不是之前的 a.txt:

jay@jaylinuxlenovo:~/test$ ls -l a.txt.slink
lrwxrwxrwx 1 jay jay 5 Feb 20 21:36 a.txt.slink -> a.txt #已存在的符号链接
jay@jaylinuxlenovo:~/test$ ln -s test.txt a.txt.slink 
ln: failed to create symbolic link 'a.txt.slink': File exists #直接创建已存在文件会报错
jay@jaylinuxlenovo:~/test$ ln -sf test.txt a.txt.slink  #强制创建成功
jay@jaylinuxlenovo:~/test$ ls -l a.txt.slink
lrwxrwxrwx 1 jay jay 8 Feb 20 21:44 a.txt.slink -> test.txt #链接信息改变

5. 遇到已存在文件则创建备份

ln -sb test.txt a.txt.slink

同例 4 中描述的,a.txt.slink 已存在的情况下无法直接创建同名链接,此时也可以使用 -b 选项告知 ln 在遇到冲突时创建一个备份文件。此时可以看到指令执行完后新增了一个 a.txt.slink~ ,其指向 a.txt,也就是原来 a.txt.slink 的备份,而新的 a.txt.slink 已经指向了 test.txt。

jay@jaylinuxlenovo:~/test$ ls -l a.txt.*
lrwxrwxrwx 1 jay jay 5 Feb 20 21:55 a.txt.slink -> a.txt
jay@jaylinuxlenovo:~/test$ ln -sb test.txt a.txt.slink
jay@jaylinuxlenovo:~/test$ ls -l a.txt.*
lrwxrwxrwx 1 jay jay 8 Feb 20 21:57 a.txt.slink -> test.txt
lrwxrwxrwx 1 jay jay 5 Feb 20 21:55 a.txt.slink~ -> a.txt 

6. 显示创建链接的详细信息

ln -v a.txt ln_test

使用 -v 选项会在创建链接时显示链接创建的详细信息:

jay@jaylinuxlenovo:~/test$ ln -v a.txt ln_test
'ln_test/a.txt' => 'a.txt'

注意事项

  • 虽然 -d 选项允许管理员创建指向目录的硬链接,但通常不推荐这么做,并且由于系统的限制,该操作即使由管理员调用,也有可能失败。

  • 如果使用了 -s 选项则会忽略 -L-P。否则,当目标文件是个符号链接时,最后指定的选项会决定 ln 指令最终的行为。

  • 创建硬链接时,源文件和硬链接必须位于同一文件系统内。

  • 删除源文件不会影响到硬链接的访问,因为硬链接指向的是文件的内容。但删除符号链接的源文件会导致符号链接失效。(详细原理可以查看上文中知识拓展的文章)

  • 使用符号链接时要注意相对路径和绝对路径的区别,尤其是在移动文件时。

  • 一般情况下硬链接不能指向目录,而符号链接可以。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

以智领航 鸿翼助力企业构筑智能化知识管理体系

全面智能化时代,鸿翼倾力打造“知识管理人工智能”的深度融合之作——鸿翼KM知识管理,植根非结构化数据治理全生命周期,打造出智能高效的知识管理体系,助推企业数智化转型落地。 数字化时代的知识管理 文档是现代企业运行与管理的…

springboot大学生请假管理系统-计算机毕业设计源码17453

摘 要 从20年代开始,计算机疯狂的出现在人们的生活以及工作当中,成为人们生活、工作的好帮手,计算机深入到每家每户当中,网络办公,网络教学更是替换了传统手工记录管理的方式,使用计算机办公可以不必局限于…

Vue3轻松创建交互式仪表盘

本文由ScriptEcho平台提供技术支持 项目地址:传送门 基于 Plotly.js 的 Vue 仪表盘组件 应用场景介绍 仪表盘是一种交互式可视化工具,用于监控和分析关键指标。它广泛应用于各种行业,例如金融、医疗保健和制造业。 代码基本功能介绍 本…

linux快捷键

快捷键 ctrl c 强制停止ctrl d 退出登录history 查看历史命令!命令前缀,自动匹配上一个命令ctrl r 搜索历史命令ctrl a | e 光标移动到命令开始或结束ctrl 左箭头 | 右箭头 左右跳单词ctrl | 或者 clear 清屏 !命令前缀 例如这里之前…

德旺训练营称重问题

这是考小学的分治策略,小学的分治策略几乎都是分三组。本着这个策略,我们做看看。 第一次称重: 分三组,16,16,17,拿两个16称,得到A情况,一样重,那么假铜钱在那组17个里面。B情况不…

3d打开模型的时候怎么没有灯光?---模大狮模型网

在3D建模与渲染过程中,灯光是至关重要的元素之一,直接影响到最终场景的视觉效果和真实感。然而,有时打开3D模型时可能会发现缺乏适当的灯光设置,这会导致场景显得暗淡或平淡无奇。本文将探讨为何在打开3D模型时可能没有灯光的原因…

AI时代的产品经理的成长指南_pdca循环理论制定ai学习成长计划

一、人人不都是产品经理 大多数人听到“产品经理”这个词,总会联想到“人人都是产品经理”这句话。但实际上产品经理这个岗位并没有那么简单。 用一句话概括产品经理的职责就是“帮助团队交付正确产品给用户的人”。也就是说,产品经理要能凝聚团队的力…

在线JSON可视化工具--改进

先前发布了JSON格式化可视化在线工具,提供图形化界面显示结构关系功能,并提供JSON快速格式化、JSON压缩、快捷复制、下载导出、对存在语法错误的地方能明确显示,而且还支持全屏,极大扩大视野区域。 在线JSON格式化可视化工具 但…

C语言版,链表头插法与尾插法

最近又开始看数据结构与算法,看到这个头插法还真的是头插法,头都搞疼了,略微理解了一些。尾插法还好一些,比较好理解,但是如果深入理解还是可以理解。 头插法核心代码: head->next NULL; s->next h…

windows重装系统

一、下载Ventoy工具,制作启动盘 官网地址:https://www.ventoy.net/cn/download.html 电脑插入用来制作系统盘的U盘,建议大小在8G以上。 双击打开刚解压出来的Ventoy2Disk.exe文件。打开界面如图: 确认U盘,如图&am…

java常用类(3)

目录 一. 正则表达式 二. Math类 三. Random类 四. Date类 五. Calendar类 六. SimpDateFormate类 七. BigInteger类 八. BigDecimal类 一. 正则表达式 正则表达式(Regular Expression)就是用一些特殊的符号去匹配一个字符串是否符合规则,利用String类中的matches()方…

3D Gaussian Splatting代码中的train和render两个文件代码解读

现在来聊一聊训练和渲染是如何进行的 training train.py line 31 def training(dataset, opt, pipe, testing_iterations, saving_iterations, checkpoint_iterations, checkpoint, debug_from):# 初始化第一次迭代的索引为0first_iter 0# 准备输出和日志记录器tb_writer p…

滚珠花键促进汽车产业整体升级与发展!

滚珠花键能够实现高效的传动和连接,确保物体在运动过程中的精确位置和稳定性,被广泛应用于机械制造、航空航天、工业自动化、工业汽车、工业机器人、高速铁路等领域。为各个行业的发展提供了重要支持,尤其是在工业汽车领域中,为我…

数据库管理系统中的磁盘、文件、页和记录管理

1. 引言 数据库管理系统(DBMS)是一个复杂的软件系统,用于管理和操作数据库中的数据。DBMS需要有效地在磁盘和内存之间组织和管理数据,以确保高效的数据存储和检索。本文将详细介绍DBMS中关于磁盘、文件、页和记录的管理&#xff…

关于电子画册的制作方法

在这个数字化飞速发展的时代,电子画册以其便捷的分享方式和环保的理念,逐渐成为艺术家和设计师的新宠。如果你也想将自己的作品集或品牌故事以电子画册的形式呈现,那么就跟随我们的脚步,一起探索电子画册的制作方法吧!…

鸿蒙开发设备管理:【@ohos.runningLock (Runninglock锁)】

Runninglock锁 该模块主要提供Runninglock锁相关操作的接口,包括创建、查询、持锁、释放锁等操作。 说明: 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 导入模块 import runningLock f…

龙迅 国产原装 低成本高性能转换器 Type-C with 2lane@8.1Gbps/lane 4K60

2.一般说明 LT8711UXE1是一款高性能的Type-C/DP1.2至HDMI2.0转换器,设计用于将USBType-C源或DP1.2源连接至HDMI2.0收发器。该LT8711UXE1集成了一个DP1.2兼容接收器,和一个HDMI2.0兼容发射器。此外,还包括用于CC通信的两个CC控制器&#xff0c…

VS生成类图

VS生成类图 1、启动visualstudioinstaller,点击“单个组件“,“代码工具”,勾选”类设计器“。 2、右键要查看的项目,选“查看类图”

css---before和after伪元素

1.什么是伪元素 伪元素不是真正的页面元素,html没有对应的元素,但是其所有用法和表现行为与真正的页面元素一样,可以对其使用如页面元素一样的CSS样式,表面上看上去貌似是页面的某些元素来展现,实际上CSS样式展现的行…

揭秘JWT:从CTF实战到Web开发,py使用JWT令牌验证

揭秘JWT:从CTF实战到Web开发,使用JWT令牌验证 介绍 JWT(JSON Web Tokens)是一种开放标准(RFC 7519),它定义了一种紧凑且自包含的方式,用于在网络上安全地传输信息。这种信息可以验…