如何在 Linux 系统上创建软硬链接 ?

news2024/11/26 8:24:09

Hard-Soft-Links-Linux

在本指南中,我将介绍什么是链接以及如何更好地使用它们以及所需的概念。

通过执行 man ln 命令,可以看到这是在文件之间建立链接,而没有提及是软链接或硬链接。

shashi@linuxtechi ~}$ man ln

类似地,命令 man link 描述为调用链接功能创建文件。

Difference-between-HardLink-SoftLink-Linux

Soft Link

软链接顾名思义就是创建到新文件的新链接。在这种情况下,新文件的节点号将指向旧文件。

SoftLink-Figure

Hard Link

在这种情况下,旧文件和新文件都将指向相同的索引节点号。

HardLink-Figure

Symbolic Link

在某些 Unix/Linux 系统中,符号和软链接都被视为相同的。但是实际的差异是,新的文件和旧文件将指向一个新的 Inode 号码,这将完全取决于实施。

SymbolicLink-Figure

注意: 在许多情况下,符号和软链接术语可以互换使用,但是人们必须知道什么时候用什么。

Creating Hard Link

(1) man ln 命令输出如下

shashi@linuxtechi ~}$ man ln
ln  - make links between files

(2) ln 命令无参数,输出如下

shashi@linuxtechi ~}$ln
ln: missing file operand
Try 'ln --help' for more information.

(3) 在两个文件之间创建硬链接,首先检查文件是否存在,否则将创建文件,然后链接它们。

shashi@linuxtechi ~}$ ls -la
total 24
drwx------  4 root root 4096 Feb  6 15:23 .
drwxr-xr-x 23 root root 4096 Jan 25 16:39 ..
-rw-r--r--  1 root root 3122 Jan 25 16:41 .bashrc
drwx------  2 root root 4096 Feb  6 15:23 .cache
-rw-r--r--  1 root root    0 Jan 25 16:41 .hushlogin
-rw-r--r--  1 root root  148 Aug 17  2015 .profile
drwxr-xr-x  2 root root 4096 Jan 25 16:41 .ssh

(4) 使用 touch 命令创建文件

shashi@linuxtechi ~}$ touch 123.txt
shashi@linuxtechi ~}$ ls -l
total 0
-rw-r--r-- 1 root root 0 Feb  6 15:51 123.txt

(5) 使用 cat 命令将内容输入到文件中,然后按 ctrl+c 保存并退出。

shashi@linuxtechi ~}$ cat > 123.txt
Welcome to this World!
^C

(6) 创建 123.txt 和 321.txt 文件之间的硬链接

shashi@linuxtechi ~}$ ln 123.txt 321.txt
shashi@linuxtechi ~}$ ls -l
total 8
-rw-r--r-- 2 root root 23 Feb  6 15:52 123.txt
-rw-r--r-- 2 root root 23 Feb  6 15:52 321.txt

(7) 检查文件的索引节点号

shashi@linuxtechi ~}$ ls -li
total 8
794583 -rw-r--r-- 2 root root 23 Feb  6 15:52 123.txt
794583 -rw-r--r-- 2 root root 23 Feb  6 15:52 321.txt
$ cat 321.txt
Welcome to this World!

(8) 再创建一个名为 456.txt 的文件,并使用 ln 命令将其链接到 321.txt

shashi@linuxtechi ~}$  ls -li
total 12
794583 -rw-r--r-- 3 root root 23 Feb  6 15:52 123.txt
794583 -rw-r--r-- 3 root root 23 Feb  6 15:52 321.txt
794583 -rw-r--r-- 3 root root 23 Feb  6 15:52 456.txt
$ cat 456.txt
Welcome to this World!
shashi@linuxtechi ~}$   ls -l
total 12
-rw-r--r-- 3 root root 23 Feb  6 15:52 123.txt
-rw-r--r-- 3 root root 23 Feb  6 15:52 321.txt
-rw-r--r-- 3 root root 23 Feb  6 15:52 456.txt

(9) 当源文件或这些文件中的任何一个被删除时,它不会影响其他文件。

shashi@linuxtechi ~}$ rm 123.txt
shashi@linuxtechi ~}$ ls -l
total 8
-rw-r--r-- 2 root root 23 Feb  6 15:52 321.txt
-rw-r--r-- 2 root root 23 Feb  6 15:52 456.txt
shashi@linuxtechi ~}$ ls -li
total 8
794583 -rw-r--r-- 2 root root 23 Feb  6 15:52 321.txt
794583 -rw-r--r-- 2 root root 23 Feb  6 15:52 456.txt
shashi@linuxtechi ~}$ cat 456.txt
Welcome to this World!

(10) 不允许跨目录创建硬链接。

shashi@linuxtechi ~}$ls -l
total 8
-rw-r--r-- 2 root root 23 Feb  6 15:52 321.txt
-rw-r--r-- 2 root root 23 Feb  6 15:52 456.txt
shashi@linuxtechi ~}$ mkdir abc
shashi@linuxtechi ~}$ ln abc def
ln: abc: hard link not allowed for directory

(11) 对一个文件内容的任何更改都将影响并相应地更改其他文件的内容。

shashi@linuxtechi ~}$ vi 321.txt
Welcome to this World!
You are welcomed to this new world
:wq
shashi@linuxtechi ~}$ ls -l
total 12
-rw-r--r-- 2 root root   59 Feb  6 16:24 321.txt
-rw-r--r-- 2 root root   59 Feb  6 16:24 456.txt
drwxr-xr-x 2 root root 4096 Feb  6 16:18 abc
shashi@linuxtechi ~}$ cat 456.txt
Welcome to this World!
You are welcomed to this new world

Creating Soft Link:

(1) 使用 touch 命令创建文件 src.txt,使用 cat 命令输入内容,然后按 ctrl+c 保存并退出。

shashi@linuxtechi ~}$ touch src.txt
shashi@linuxtechi ~}$ cat > src.txt
Hello World
^C
shashi@linuxtechi ~}$ ls -l
total 4
-rw-r--r-- 1 root root 12 Feb  6 16:32 src.txt

(2) 将目标文件创建为 dst.txt,并使用 ln -s 命令创建符号链接 (也称为软链接)。查看 dst.txt 文件的内容,可以看到与 src.txt 相同的内容。

shashi@linuxtechi ~}$ ln -s src.txt dst.txt
shashi@linuxtechi ~}$  ls -l
total 4
lrwxrwxrwx 1 root root  7 Feb  6 16:33 dst.txt -> src.txt
-rw-r--r-- 1 root root 12 Feb  6 16:32 src.txt
shashi@linuxtechi ~}$  cat dst.txt
Hello World

(3) 在符号链接的情况下,源文件和目标文件的 inode 号不同。在权限中出现字母 l,表明这些是链接。dst.txt ->src.txt 将是现在建立的新链接。

shashi@linuxtechi ~}$  ls -li
total 4
794584 lrwxrwxrwx 1 root root  7 Feb  6 16:33 dst.txt -> src.txt
794583 -rw-r--r-- 1 root root 12 Feb  6 16:32 src.txt

(4) 允许对目录进行符号创建

shashi@linuxtechi ~}$ mkdir abc
shashi@linuxtechi ~}$ ln -s abc def
$ ls -l
total 8
drwxr-xr-x 2 root root 4096 Feb  6 16:34 abc
lrwxrwxrwx 1 root root    3 Feb  6 16:34 def -> abc
lrwxrwxrwx 1 root root    7 Feb  6 16:33 dst.txt -> src.txt
-rw-r--r-- 1 root root   12 Feb  6 16:32 src.txt

(5) 源和目标的 Inode 编号不同

shashi@linuxtechi ~}$  ls -li
total 8
794585 drwxr-xr-x 2 root root 4096 Feb  6 16:34 abc
794586 lrwxrwxrwx 1 root root    3 Feb  6 16:34 def -> abc
794584 lrwxrwxrwx 1 root root    7 Feb  6 16:33 dst.txt -> src.txt
794583 -rw-r--r-- 1 root root   12 Feb  6 16:32 src.txt

(6) 如前所述,可以为目录创建符号链接。一旦创建了这些带有符号链接的目录,就可以在这些目录中创建文件。当在源目录中创建文件时,同样的情况也会反映在目标目录中。

shashi@linuxtechi ~}$ $ cd abc
shashi@linuxtechi ~}$  touch 123.txt
shashi@linuxtechi ~}$  vi 123.txt
Hello
:wq!
shashi@linuxtechi ~}$  touch 456.txt
shashi@linuxtechi ~}$  cd ..
shashi@linuxtechi ~}$  ls -l
total 8
drwxr-xr-x 2 root root 4096 Feb  6 16:36 abc
lrwxrwxrwx 1 root root    3 Feb  6 16:34 def -> abc
lrwxrwxrwx 1 root root    7 Feb  6 16:33 dst.txt -> src.txt
-rw-r--r-- 1 root root   12 Feb  6 16:32 src.txt
shashi@linuxtechi ~}$ cd def
shashi@linuxtechi ~}$ ls -l
total 4
-rw-r--r-- 1 root root 6 Feb  6 16:37 123.txt
-rw-r--r-- 1 root root 0 Feb  6 16:36 456.txt
shashi@linuxtechi ~}$ cat 123.txt
Hello

Removing Soft Link / Symbolic Links

使用 rm 和 unlink 命令删除软链接或符号链接

# rm <soft-link-filename>
# unlink <soft-link-filename>

删除软链接目录

# rm <soft-link-directory>
# unlink <soft-link-directory>

我的开源项目

酷瓜云课堂-开源知识付费解决方案

  • course-tencent-cloud(酷瓜云课堂 - gitee仓库)
  • course-tencent-cloud(酷瓜云课堂 - github仓库)

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

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

相关文章

vue-I18n开箱方式

最近公司没什么活&#xff0c;没事捣鼓捣鼓技术 话不多说 上干货 npm i vue-i18nlatest //下载最新版插件创建文件用来存放需要的公共语言 文件夹内容 const zh {message: {Language: "简体中文",name: "中文名称",}, }; export default zh;const ja …

基于微软TTS,优雅的实现文本转语音

项目介绍 该项目源自以前了解的edge-tts&#xff0c;edge-tts 是一个python库&#xff0c;用于将文本转换为语音&#xff0c;它依赖于 Microsoft Azure 的 Text-to-Speech 服务&#xff0c;可以轻松实现本地文字转语音&#xff0c;在所有的文字转语音的服务中&#xff0c;说它…

Unity透视镜透视效果——Shader

一、效果示意图 二、透视的过程 要看的效果&#xff1a;【相机】借助【球体】&#xff0c;透过【圆柱】看到【红色的方块】 三、实现原理-Shader 借助shader&#xff0c;两个挂有特殊shader的物体&#xff0c;当他们在视线里重叠的时候&#xff0c;重叠的部分变成透明。 …

Android NDK开发入门

目录 1. 创建 C 代码2. 定义 JNI 接口3. 在 Java 中声明本地方法4. 创建 CMakeLists.txt 文件5. 配置 build.gradle6. 编译和运行7.项目结构8.总结 在 Android 开发中&#xff0c;编写 JNI (Java Native Interface) 接口使得应用层能够调用 C 代码&#xff0c;涉及到几个步骤&a…

光流运动估计教程

文章目录 概要什么是光流?稀疏光流与密集光流实现稀疏光流1. 设置环境2.配置OpenCV读取视频并设置参数3. Grayscaling 3. 灰度化4. Shi-Tomasi 角点检测器 – 选择要跟踪的像素5. Lucas-Kanade:稀疏光流6. 可视化实现密集光流1. 设置环境2. 配置 OpenCV 读取视频3. 灰度4. Fa…

从力扣中等+困难题+表白HTML测试 -- 文心快码(Baidu Comate)

0 写在前面 官网地址&#xff1a;Baidu Comate Step1 打开文心快码&#xff08;Baidu Comate&#xff09;官网&#xff0c;点击「免费使用」/「下载安装」 Step2 可以根据官网步骤快速唤起VS Code&#xff1b; 也可以直接在VS Code、Visual Studio扩展管理搜索“文心快码”/…

Xshell 连接服务器

Xshell 连接服务器 安装 Xshell7 天免费试用永久免费试用 连接服务器 安装 Xshell 双击运行安装程序 点击 下一步 同意用户协议&#xff0c; 点击下一步 选择安装位置&#xff0c; 点击下一步 设置程序文件夹名&#xff0c; 点击安装 等待软件安装完毕 ## 软件激活 7 天免费试…

怎样在线免费音频转文字?放心交给这4款音频转文字能手

从会议记录到个人笔记&#xff0c;从播客到讲座录音&#xff0c;大家是否有考虑过如何将这些宝贵的音频信息快速转化为文字&#xff0c;以便更好地保存、分享和分析呢&#xff1f;其实我这倒是有一个不错的解决方案&#xff0c;那便是利用音频转文字软件免费来进行转换~ 想知道…

安全课堂开课了,不容小觑的暗水印来啦!数据防泄密管理新趋势——添加暗水印!

数据泄露的风险日益加剧&#xff0c;为了有效保护企业的敏感信息&#xff0c;防止数据被非法复制、传播或泄露&#xff0c;一种名为“暗水印”的技术逐渐走进了企业的视野&#xff0c;并成为了数据防泄密管理的新趋势。 今天&#xff0c;我们就来深入探讨一下这一不容忽视的技…

BurpSuite

如果只能用一个Web渗透工具&#xff0c;我选BurpSuite。 Web应用程序&#xff08;Web Application&#xff09; 不同于传统的静态网站所有程序的特点是接收、处理用户输入并返回结果服务器端是个程序&#xff0c;需要程序代码实现业务功能&#xff08;java、php、asp.nse&…

智慧社区新视界:EasyCVR视频汇聚平台下的数字化治理实践

在当今科技飞速发展的时代&#xff0c;“数字城市智慧社区”这个概念正逐渐走进我们的生活。那么&#xff0c;数字城市智慧社区到底是什么样子的呢&#xff1f; 随着城市化的不断推进&#xff0c;数字城市建设已成为提升城市管理效率、改善居民生活质量的重要手段。智慧社区作…

简单回归模型建立(下)

目录 数据准备 特征选择 目标变量 模型选择 示例代码 ​编辑分析结果 上部分对数据进行了分析以及可视化 选择不同的目标变量&#xff0c;例如“Cost of Living Index”作为我们要预测的目标。然后&#xff0c;我们可以使用其他相关的指标作为特征来训练模型。例如&…

邮件系统安全管家:CACTER SMC2的全面升级

根据Coremail邮件安全人工智能实验室监测&#xff0c;2024年Q2全国企业级用户遭受超过21.4亿次暴力破解&#xff0c;相比于Q1的39.1亿次暴力破解&#xff0c;环比降幅约为45%&#xff0c;无差别的暴力破解攻击大幅下降&#xff0c;但数据显示暴力破解攻击成功次数正在回升。 20…

搭配Intel第13代酷睿处理器

高性能内存硬盘这么买 intel第13代酷睿已经于2022年10月底正式上市。相比于第12代酷睿性能大涨,内置20条PCle通道(16条PCle 5.0和4条PCle 4.0)、可最多支持128GB DDR5 5600/DDR4 3200双通道内存,搭配Z790系列主板组建高端性能平台,满足未来设计、游戏、专业应用等需求。如…

Web前端开发【新手入门指南】

Web前端开发入行门槛低、薪资高&#xff0c;是互联网行业的紧俏岗位之一。 目前Web前端开发人员年薪基本都在10万以上&#xff0c;一线城市的薪资会更高&#xff0c;这也吸引了很多人进入Web前端行业。对于完全不了解行业的人来说&#xff0c;他们对Web前端知之甚少。下面小菌…

怎么去掉U盘的写保护

要去除U盘的写保护&#xff0c;可以尝试以下几种方法&#xff1a; 检查U盘的物理写保护开关&#xff1a;部分U盘具有物理写保护开关&#xff0c;如果开关被切换到写保护状态&#xff0c;U盘就会被写保护。找到并关闭这个开关即可使用DiskPart命令&#xff1a;通过命令提示符工…

【C++11】右值引用的深度解析(什么是右值引用?它有什么作用?能应用在那些场景?)

目录 一、前言 二 、什么是左值什么是右值&#xff1f; &#x1f525;左值&#x1f525; &#x1f525;右值 &#x1f525; 三、什么是右值引用&#xff1f; &#x1f4a7;左右引用的“引出”&#x1f4a7; &#x1f4a7;左值引用 &#x1f4a7; &#x1f4a7;右值引用…

C# 不一样的洗牌算法---Simd指令

洗牌算法&#xff0c;以随机打乱数组中元素的位置 测试数据创建 int[] _data; Random rng new Random(); protected override void CreateData() {_data new int[_size];for (int i 0; i < _data.Length; i){_data[i] i;} } 普通打乱数组元素位置 protected overrid…

VBA学习(27):在筛选数据中复制可见单元格

在筛选数据中复制数据时&#xff0c;可以按原结构粘贴所复制的数据。具体如下文&#xff1a; 下图所示为示例数据。 我们对列C进行筛选&#xff0c;如下图所示 复制单元格区域B2:B10&#xff0c;然后粘贴到以单元格E2开始的区域&#xff0c;结果如下图所示。正如所见&#xff…

LLM之RLHF:Karpathy视角来对比RLHF技术和RL技术—RLHF is just barely RL(RLHF只是勉强算作强化学习)

LLM之RLHF&#xff1a;Karpathy视角来对比RLHF技术和RL技术—RLHF is just barely RL(RLHF只是勉强算作强化学习) 导读&#xff1a;2024年8月8日&#xff0c;Karpathy发表了一个有意思的观点&#xff0c;RLHF is just barely RL. 强化学习从人类反馈(RLHF)训练方法只是勉强属于…