Linux基础命令-ln创建链接文件

news2024/11/25 7:55:18

文章目录

ln

命令介绍

命令格式

基本参数

参考实例

1) 创建文件的硬链接

2)创建文件的软链接

3)创建链接文件时,相同目标文件创建备份文件

命令总结

ln

命令介绍

        先看下帮助文档中的含义

NAME
       ln - make links between files

ln(link)命令的主要功能是给源文件建立一个链接文件,系统中存在两种链接文件,一个是硬链接(hard link),一个是软连接(symbolic link)。

  • 硬链接:硬链接的原理就是多个文件名指向同一个inode,因此多个文件名公用一个inode号,达到共享和备份的目的,即使将源文件删除,硬链接文件依然可以指向block读取该文件的数据;但硬链接只能针对文件进行操作,无法对目录建立硬链接,也不能进行跨分区建立。
  • 软链接:可以理解成是windows中的快捷方式,建立软链接之后,是重新生成一个新的inode号,软链接文件增加信息,源文件信息也会跟着修改,如果将源文件删除了,那么软链接也会跟着失效;优势是可以对文件和目录进行操作,也可进行跨分区建立。

命令格式

命令的语法格式:ln 【参数】【源文件】【目标文件】

SYNOPSIS
       ln [OPTION]... [-T] TARGET LINK_NAME   (1st form)
       ln [OPTION]... TARGET                  (2nd form)
       ln [OPTION]... TARGET... DIRECTORY     (3rd form)
       ln [OPTION]... -t DIRECTORY TARGET...  (4th form)

基本参数

先看下命令的参数有哪些,表格形式显示:

-b为已存在的目标文件创建备份文件
-d允许root用户尝试创建硬链接目录(由于系统限制,大概率会失败)
-f强制覆盖现有的目标文件
-n把指向目录的符号链接视为一个普通文件
-i提示是否删除目录文件
-s对源文件建立(符号链接)快捷方式

参考实例

1) 创建文件的硬链接

创建文件的硬链接后,可以看到源文件和目标文件的inode号是一致的,并且文件的链接数是2。

[root@localhost ~]# cd data
[root@localhost data]# ll
总用量 0
[root@localhost data]# touch a.txt
[root@localhost data]# ln a.txt b.txt
[root@localhost data]# ll
总用量 0
-rw-r--r--. 2 root root 0 2月  28 15:44 a.txt
-rw-r--r--. 2 root root 0 2月  28 15:44 b.txt
[root@localhost data]# ll -i 
总用量 0
67259420 -rw-r--r--. 2 root root 0 2月  28 15:44 a.txt
67259420 -rw-r--r--. 2 root root 0 2月  28 15:44 b.txt

测试一:创建文件的硬链接后,删除源文件看看对硬链接文件有没有影响

首先先往文件中写入一些内容,让它成为一个有数据的文件。

[root@localhost data]# echo "hello world" > a.txt
[root@localhost data]# cat b.txt 
hello world
[root@localhost data]# cat a.txt 
hello world
[root@localhost data]# rm -f a.txt
[root@localhost data]# echo "this is centos7.9" >> b.txt
[root@localhost data]# cat b.txt 
hello world
this is centos7.9
[root@localhost data]# ll -hi b.txt 
67259420 -rw-r--r--. 1 root root 30 2月  28 15:48 b.txt

删除源文件后,硬链接文件完全不受影响,依然可以往其中写入内容,只是链接数变回了1。

测试二:对目录创建硬链接,看是否能创建

可以看到加上了-d参数,还是不能创建硬链接目录

[root@localhost data]# ln -d test test1
ln: 无法创建硬链接"test1" => "test": 不允许的操作

测试三:把文件的硬链接放到/dev目录

结果显示无法创建硬链接,这个是因为硬链接无法进行目录,跨分区实现建立,因为每个分区都有自己独立的INODE编号。

[root@localhost data]# ll
总用量 4
-rw-r--r--. 1 root root 30 2月  28 15:48 b.txt
drwxr-xr-x. 2 root root  6 2月  28 15:52 test
[root@localhost data]# ln b.txt /dev/b.txt
ln: 无法创建硬链接"/dev/b.txt" => "b.txt": 无效的跨设备连接

[root@localhost data]# df -ih
文件系统                Inode 已用(I) 可用(I) 已用(I)% 挂载点
devtmpfs                 488K     351    488K       1% /dev
tmpfs                    492K       1    492K       1% /dev/shm
tmpfs                    492K    1.4K    491K       1% /run
tmpfs                    492K      16    492K       1% /sys/fs/cgroup
/dev/mapper/centos-root   18M    130K     18M       1% /
/dev/sda1                512K     340    512K       1% /boot
tmpfs                    492K      22    492K       1% /run/user/0
/dev/sr0                    0       0       0        - /run/media/root/CentOS 7 x86_64

2)创建文件的软链接

创建软链接就需要加上-s的参数才行

[root@localhost data]# touch c.txt
[root@localhost data]# ln -s c.txt d.txt
[root@localhost data]# ll d.txt 
lrwxrwxrwx. 1 root root 5 2月  28 16:07 d.txt -> c.txt

创建好之后会显示d.txt文件指向了c.txt,当然可以看ll显示的文件类型,这里显示的文件类型是链接文件。

测试一:创建文件的软链接后,删除源文件看看对软链接文件有没有影响

还是一样,先写入一些内容到文件里

[root@localhost data]# touch c.txt
[root@localhost data]# ln -s c.txt d.txt
[root@localhost data]# ll -i c.txt d.txt 
67259384 -rw-r--r--. 1 root root 9 2月  28 16:17 c.txt
67259421 lrwxrwxrwx. 1 root root 5 2月  28 16:17 d.txt -> c.txt
[root@localhost data]# echo "hello world " > d.txt 
[root@localhost data]# rm -f c.txt 
[root@localhost data]# ll -h d.txt 
lrwxrwxrwx. 1 root root 5 2月  28 16:17 d.txt -> c.txt
[root@localhost data]# cat d.txt 
cat: d.txt: 没有那个文件或目录

对比源文件和软连接文件的inode号是不一样的,删除了源文件也就意味着链接文件失效了,里面的内容也查看不到。

测试二:对目录创建软链接,看是否能创建

目录是无法创建硬链接的,看下能否创建软连接

[root@localhost data]# mkdir test
[root@localhost data]# ln -s test test_dir
[root@localhost data]# ll -id test test_dir
  421301 drwxr-xr-x. 2 root root 6 2月  28 16:25 test
67259384 lrwxrwxrwx. 1 root root 4 2月  28 16:25 test_dir -> test

答案是肯定的,软链接是可以对目录进行创建的,创建出来的inode号是不相同的。

测试三:把文件的软链接放到/dev目录

前面有测试过硬链接是不能跨分区创建的,现在来看下软链接是否可行。

[root@localhost data]# ln -s test /dev/test_dir
[root@localhost data]# ll -id /dev/test_dir 
107112 lrwxrwxrwx. 1 root root 4 2月  28 16:28 /dev/test_dir -> test
[root@localhost data]# ll
总用量 0
drwxr-xr-x. 2 root root 6 2月  28 16:25 test
lrwxrwxrwx. 1 root root 4 2月  28 16:25 test_dir -> test
[root@localhost data]# touch a.txt
[root@localhost data]# ln -s a.txt /dev/a.txt
[root@localhost data]# ll -i /dev/a.txt 
107625 lrwxrwxrwx. 1 root root 5 2月  28 16:28 /dev/a.txt -> a.txt

 可以在其他分区创建软连接。

3)创建链接文件时,相同目标文件创建备份文件

相同的目标文件备份后会在同名称后加上一个“~”符号

[root@localhost data]# touch test/1.txt
[root@localhost data]# touch 1.txt
[root@localhost data]# ln -b 1.txt test/1.txt 
[root@localhost data]# ll test
总用量 0
-rw-r--r--. 2 root root 0 2月  28 16:34 1.txt
-rw-r--r--. 1 root root 0 2月  28 16:34 1.txt~

命令总结

        ln命令的硬链接其实可以看做是复制,只不过复制的是inode号,而软链接则是文件的快捷方式出现,一旦源文件删除了,快捷方式也会随之失效。若觉得以上内容还行的,可以点赞支持一下!

 

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

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

相关文章

HTML标签——表单标签

HTML标签——表单标签 目录HTML标签——表单标签一、input系列标签1.文本框(拓展)value属性和name属性作用介绍2.单选框3.复选框4.文件选择二、select下拉菜单标签三、label标签一、input系列标签 1.文本框 场景:在网页中显示输入单行文本的…

FL studio2023体验版及切换水果中文语言切换教程

FL studio2023提供了试用版本可供使用,功能和入门版的功能一样,但是有个缺点是不能够保存。只能当下做完,马上输出。入门版没有提供Audio音频编辑和录制的功能,建议要下手可以从完整版本去考虑。因为就算现在没有要录音&#xff0…

【Leedcode】栈和队列必备的面试题(第一期)

栈和队列必备的面试题(第一期) 文章目录栈和队列必备的面试题(第一期)一、题目二、思路(图解)三、存在的问题与隐患(报错提示)(1)s中只有右括号,无…

Capture Modules:车载网络报文捕获模块

(以下所有图片均来源于Technica官网) Technica Engineering的新一代硬件设备,即Capture Modules,提供了五种变体以涵盖不同带宽的车载以太网(100BASE-T1和1000BASE-T1)以及常见的IVN技术(CAN、C…

云原生架构基础概念及应用办法

什么是云原生? 云原生是一种基于容器、微服务和自动化运维的软件开发和部署方法。它可以使应用程序更加高效、可靠和可扩展,适用于各种不同的云平台。 如果要更直接通俗的来解释下上面的概念。 云原生更准确来说就是一种文化,是一种潮流&a…

modbus转profinet网关连接UV系列流量计程序实例

用户现场是西门子1200PLC通过兴达易控Modbus转Profinet网关连接流量计的配置,对流量瞬时值及报警值监控及控制程序案例 硬件连接兴达易控网关采用Profinet双网口,一端连接PLC、一端连接编程软件,单路485接口连接流量计,对流量值实…

mac使用sublime text卡顿解决方法,附常用快捷键

在mac上使用sublime text总是卡顿,比如选中一段文字复制,然后去干别的,等会回来点击空白处取消对文字的选择,点好多下都取消不了。 再比如修改tab格式也是改着改着就卡住了。 解决方法也很简单,打开sublime text的配置…

MIT:只需一层RF传感器,就能为AR头显赋予“X光”穿透视力

近年来,AR在仓库、工厂等场景得到应用,比如GlobalFoundries、亚马逊、菜鸟裹裹就使用摄像头扫描定位货品,并使用AR来导航和标记。目前,这种方案主要基于视觉算法,因此仅能定位视线范围内的目标。然而,在一些…

python基础—字符串操作

(1)字符串: Python内置了一系列的数据类型,其中最主要的内置类型是数值类型、文本序列(字符串)类型、序列(列表、元组和range)类型、集合类型、映射(字典)类型…

论文阅读 | Cross-Attention Transformer for Video Interpolation

前言:ACCV2022wrokshop用transformer做插帧的文章,q,kv,来自不同的图像 代码:【here】 Cross-Attention Transformer for Video Interpolation 引言 传统的插帧方法多用光流,但是光流的局限性在于 第一&…

Android Qcom Audio架构学习

总结: Android Audio不简单呀,一个人摸索入门不容易的,研究了一段时间,感觉还不是很懂,但以下的知识对入门还是有帮助的。 Audio架构中的名词 FE(Front End) 提供pcm的设备信息,将数据从用户空间传输到音…

【大数据离线开发】8.2 Hive的安装和配置

8.3 Hive的安装和配置 安装模式: 嵌入模式 :不需要使用MySQL,需要Hive自带的一个关系型数据库:Derby本地模式、远程模式 ----> 需要MySQL数据库的支持 安装 hive 安装包 1、解压tar -zxvf apache-hive-2.3.0-bin.tar.gz -C…

美格智能发布高性价比5G CPE解决方案SRT838I,赋能5G FWA行业数字化转型

2月27日,在MWC 2023世界移动通信大会上,美格智能重磅发布高性价比5G CPE解决方案SRT838I,该方案搭载高通骁龙X62调制解调器及射频系统WCN6856高速5G解决方案设计,其具有广覆盖、强信号、高速率等特点,非常符合5G CPE的…

.NET 导入导出Project(mpp)以及发布后遇到的Com组件问题

最近公司项目有一个对Project导入导出的操作,现在市面上能同时对Project进行导入导出的除了微软自带的Microsoft.Office.Interop.MSProject,还有就是Aspose.Tasks for .NET。但因为后者是收费软件且破解版的现阶段只到18.11,只支持.net Frame…

【博学谷学习记录】超强总结,用心分享丨人工智能 多场景实战 常用英文缩写概念总结

目录PV(Page View)UV(Unique Visitor)CPM(Cost Per Mille)CPC(Cost Per Click)CPA(Cost Per Action)CPI(Cost Per Install)ACU(Average concurrent users)PCU(Peak concurrent users)ARPU(Average Revenue Per User)ARPPU(Average Revenue Per Paying User)LTV(Life Time Value…

Windows系统部署瀚高数据库并在SuperMap iDesktop中使用

目录前言一:Windows系统部署瀚高数据库二:对数据库进行PostGIS扩展三:SuperMap iDesktop中新建HighGoDB数据库型数据源作者:kxj 前言 瀚高数据库是一款对象-关系型数据库,拥有非常丰富的数据库基本功能,涵盖…

【数据结构与算法】图 ( 图的存储形式 | 图的基本概念 | 图的表示方式 | 邻接矩阵 | 邻接表 | 图的创建 | 代码示例 )

文章目录一、图的存储形式二、图的基本概念三、图的表示方式1、邻接矩阵2、邻接表四、图的创建 ( 代码示例 )一、图的存储形式 线性表 中的元素 , 有 一个 直接前驱 和 一个 直接后继 ; 树 中的元素 , 有 一个 直接前驱 和 多个 直接后继 ; 图 中的元素 , 有 多个 直接前驱 和…

常见的视频文件格式有哪些?

常见的视频文件格式有哪些?常见在线流媒体格式:mp4、flv、f4v、webm移动设备格式:m4v、mov、3gp、3g2RealPlayer :rm、rmvb微软格式 :wmv、avi、asfMPEG 视频 :mpg、mpeg、mpe、tsDV格式 :div、…

【学习笔记】构建小型金融知识图谱(github项目)

前言 需要构建农业知识图谱,先来学习一下构建知识图谱的基本流程和套路,熟悉过程方便 科研 后续工作的开展,写下此篇博客作为我的笔记吧~ 参考代码来源:github项目 jm199504/Financial-Knowledge-Graphs 1.知识图谱存储方式 知…

intel的集成显卡(intel(r) uhd graphics) 配置stable diffusion

由于很多商务本没有独立显卡,只有Intel的集成显卡,在配置安装stable diffusion 时候需要特殊对待,参考不少帖子,各取部分现稍加整合。整体思路分两个部分:第一步是先配置环境,主要是安装Anaconda Pytorch&…