linux:ln用法详解
文章目录
- 1. 描述
- 2. 语法
- 2.1 硬链接(Hard Link)
- 2.2. 符号链接(Symbolic Link / Soft Link)
- 3. `ln` 命令的常用选项
- 4. 例子
1. 描述
在 Linux 系统中,ln 命令用于创建硬链接(Hard Link)或符号链接(Symbolic Link,也称为软链接)。链接的作用是创建文件或目录的别名,而不复制文件或目录本身。硬链接和符号链接有不同的功能和使用场景。
2. 语法
ln 命令的基本语法格式如下:
ln [选项] 源文件 目标文件
其中,源文件 是你希望创建链接的文件或目录,目标文件 是你想创建的链接的路径。
完整语法如下:
Usage: ln [OPTION]... [-T] TARGET LINK_NAMEor: ln [OPTION]... TARGETor: ln [OPTION]... TARGET... DIRECTORYor: ln [OPTION]... -t DIRECTORY TARGET...
In the 1st form, create a link to TARGET with the name LINK_NAME.
In the 2nd form, create a link to TARGET in the current directory.
In the 3rd and 4th forms, create links to each TARGET in DIRECTORY.
Create hard links by default, symbolic links with --symbolic.
By default, each destination (name of new link) should not already exist.
When creating hard links, each TARGET must exist. Symbolic links
can hold arbitrary text; if later resolved, a relative link is
interpreted in relation to its parent directory.Mandatory arguments to long options are mandatory for short options too.--backup[=CONTROL] make a backup of each existing destination file-b like --backup but does not accept an argument-d, -F, --directory allow the superuser to attempt to hard linkdirectories (note: will probably fail due tosystem restrictions, even for the superuser)-f, --force remove existing destination files-i, --interactive prompt whether to remove destinations-L, --logical dereference TARGETs that are symbolic links-n, --no-dereference treat LINK_NAME as a normal file ifit is a symbolic link to a directory-P, --physical make hard links directly to symbolic links-r, --relative create symbolic links relative to link location-s, --symbolic make symbolic links instead of hard links-S, --suffix=SUFFIX override the usual backup suffix-t, --target-directory=DIRECTORY specify the DIRECTORY in which to createthe links-T, --no-target-directory treat LINK_NAME as a normal file always-v, --verbose print name of each linked file--help display this help and exit--version output version information and exit
2.1 硬链接(Hard Link)
硬链接的特点:
- 硬链接与原文件共享相同的 inode 和数据块。
- 硬链接不能跨越文件系统。
- 删除硬链接或原文件,文件数据依然存在,除非所有链接都被删除。
- 硬链接只能针对文件,不能用于目录。
硬链接是文件在文件系统中的一个指针。它们共享相同的 inode 号,指向文件的实际数据块。因此,硬链接和原始文件实际上是同一个文件,删除其中一个不会影响另一个。
用法:
ln 源文件 目标文件
示例:
ln original.txt hardlink.txt
这将创建一个名为 hardlink.txt 的硬链接,指向 original.txt。此时 hardlink.txt 和 original.txt 完全等效,删除 original.txt 不会影响 hardlink.txt。
2.2. 符号链接(Symbolic Link / Soft Link)
符号链接的特点:
- 符号链接与原文件不共享相同的 inode,它只包含原文件的路径。
- 符号链接可以跨文件系统。
- 符号链接可以指向文件或目录。
- 如果删除原文件,符号链接将变为无效。
符号链接是一个特殊类型的文件,它包含指向另一个文件或目录的路径。符号链接与硬链接不同,它们不共享相同的 inode 号,而是存储原文件的路径。
用法:
ln -s 源文件 目标文件
示例:
ln -s original.txt symlink.txt
这将创建一个名为 symlink.txt 的符号链接,指向 original.txt。如果删除 original.txt,symlink.txt 将变为一个无效的链接(称为“断链”)。
硬链接与符号链接的区别
| 特性 | 硬链接 (Hard Link) | 符号链接 (Symbolic Link) |
|---|---|---|
| Inode 共享 | 是 | 否 |
| 文件指向 | 直接指向文件的物理数据 | 指向文件的路径 |
| 文件删除影响 | 删除任一链接不会影响其他链接或文件数据 | 删除目标文件后,符号链接变为无效 |
| 跨文件系统 | 否 | 是 |
| 可链接的类型 | 仅限文件 | 文件和目录 |
3. ln 命令的常用选项
-s:创建符号链接,而非硬链接。-f:强制创建链接。如果目标文件已存在,ln会直接覆盖它。-n:如果目标文件是符号链接,ln -n会将符号链接作为常规文件处理,而不会尝试跟随它。-v:显示详细的操作信息。-T:强制将目标解释为普通文件(如果目标是一个目录,使用此选项将报告错误)。-r:创建相对路径的符号链接,而不是绝对路径。
4. 例子
(1)创建一个硬链接
ln file1.txt file2.txt
这会创建 file2.txt,它是 file1.txt 的硬链接。它们指向同一个物理数据,删除其中一个不会影响另一个。
(2)创建一个符号链接
ln -s /path/to/file1.txt /path/to/file2.txt
这会创建 file2.txt,它是 file1.txt 的符号链接。file2.txt 是指向 file1.txt 的路径引用。
(3)强制覆盖已存在的符号链接
ln -sf newfile.txt link.txt
如果 link.txt 已经存在,这条命令将强制覆盖它,指向新的文件 newfile.txt。
(4) 创建相对路径的符号链接
ln -sr /path/to/original.txt link.txt
这将创建一个相对路径的符号链接。如果 original.txt 相对于符号链接所在位置的路径关系发生变化,符号链接仍然可以正确指向目标文件。
(5)为目录创建符号链接
ln -s /home/user/mydir /tmp/mydirlink
这会创建一个名为 /tmp/mydirlink 的符号链接,指向 /home/user/mydir 目录。符号链接可以用于目录,而硬链接不能。
(6)查看链接文件信息
使用 ls -l 可以查看文件链接的信息:
ls -l
输出示例:
lrwxrwxrwx 1 user user 11 Aug 14 11:32 symlink.txt -> original.txt
在符号链接的情况下,输出中会显示符号链接指向的目标文件(symlink.txt -> original.txt)。l 表示这是一个符号链接。
(7) 删除符号链接
删除符号链接只需使用 rm 命令:
rm symlink.txt
这只会删除符号链接文件本身,不会影响原始文件。
相关文章:
linux:ln用法详解
文章目录 1. 描述2. 语法2.1 硬链接(Hard Link)2.2. 符号链接(Symbolic Link / Soft Link) 3. ln 命令的常用选项4. 例子 1. 描述 在 Linux 系统中,ln 命令用于创建硬链接(Hard Link)或符号链接…...
0基础跟德姆(dom)一起学AI Python进阶02-Python面向对象高级
1 [重点]定义类的几种语法 方式1:类名 在上一章节的学习过程中,我们都使用了这种定义类的语法: properties class 类名: 代码 ... 例如,使用该方式来定义一个老师类。 python # 1.class 类名: # pass class Te…...
【深度学习】softmax 回归的从零开始实现与简洁实现
前言 小时候听过一个小孩练琴的故事,老师让他先弹最简单的第一小节,小孩练了两天后弹不出。接着,老师让他直接去练更难的第二小节,小孩练习了几天后还是弹不出,开始感觉到挫败和烦躁了。 小孩以为老师之后会让他从简…...
Sollong、IO.NET和 Solana,为何参加 WebX 2024活动?
东京王子花园塔酒店 ChainCatcher_携手 DPCapital_XYZ与WebX_Asia共同打造“世界のStaking最大级集结|Tokyo站”盛会,为全球Staking爱好者与行业精英搭建交流合作桥梁!全球顶尖Staking项目方、知名区块链机构、行业领袖与企业家将齐聚东京,共…...
3个免费好用的网站,可以转换PDF,提取MP3
今天分享的三个网站,分别用于文件转换PDF,QMC转MP3格式和配色网站。 TOPDF 这个网站是一个在线PDF转换工具,可以快速将文本文件、演示文稿、电子表格和图片转换为PDF格式。它支持多种文件格式,如AZW3、BMP、CHM、CSV、DjVu、DOC、…...
PHP智能匹配轻松预订自习室在线订座系统小程序源码
智能匹配,轻松预订——自习室在线订座系统 📚【开篇:告别排队,迎接智能学习新时代】📚 还在为找不到合适的自习室座位而烦恼吗?是不是每次去图书馆或自习室都要提前好久去排队占位?现在&#…...
构建高效医护人员排班系统:Spring Boot框架的优势
1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及,互联网成为人们查找信息的重要场所,二十一世纪是信息的时代,所以信息的管理显得特别重要。因此,使用计算机来管理医护人员排班系统的相关信息成为必然。开发…...
深度学习——引言
一、机器学习的关键因素 1.1 数据 每个数据集由一 个个样本组成,大多情况下,数据遵循独立同分布。通常每个样本由一组特征属性组成。 好的数据集 { 数据样本多 正确的数据 ( g a r b a g e i n , g a r b a g e o u t ) 好的数据集 \begin{cases} 数据…...
安装Android Studio及第一个Android工程可能遇到的问题,gradle下载过慢、sync失败?
Android Studio版本众多,电脑操作系统、电脑型号、电脑硬件也是多种多样,幸运的半个小时内可以完成安装,碰到不兼容的电脑,一天甚至更长时间都无法安装成功。 Android安装及第一个Android工程分为4个步骤,为什么放到一…...
密码学---常见的其他密码
✨费纳姆密码:加解密都需要密钥,以二进制形式表示的密码。(密钥多是一次性的,称位一次性密码本) 加密过程: char_num {A: 1000001, B: 1000010, C: 1000011, D: 1000100,E: 1000101, F: 1000110, G: 100…...
Mysql8 主从复制主从切换(超详细)
文章目录 1 主从复制1.1 实施前提1.2 主节点配置(在192.168.25.91操作)1.3 从节点配置(在192.168.25.92操作)1.4 创建用于主从同步的用户1.5 开启主从同步1.5 主从同步验证 2 主从切换2.1 实施前提2.2 主节点设置只读(在192.168.25.91操作)2.3 检查主从数据是否同步完毕(在192.…...
8月29日wpf
小语 折磨我们的往往是想象,而不是真实。 学wpf 7.07 1.vs如何创建新项目? 退出,创建新项目,点c#,windows,进入界面 2.app.config在哪里? 好像只有这个。。。 试一下,不是 我…...
Android经典实战之SurfaceView原理和实践
本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点 SurfaceView 是一个非常强大但也相对复杂的 UI 组件,特别适用于对性能要求较高的绘制任务,如视频播放、游戏等。 1. Su…...
蜜罐的识别
蜜罐技术本质上是对网络攻击方欺骗的一项技术,通过在服务上布置一些仿真的系统、网络服务、或是模拟一些物联网设备来诱惑攻击方对其实施攻击从而捕获攻击行为,分析攻击手段与方式,或是收集一些攻击者的个人信息来进行分析画像达到精准溯源的…...
传感与检测技术
感知技术 传感器基本特性 静态特性 动态特性 传感器分类 电阻式传感器 通常情况下,电阻应变传感器的灵敏系数为常数 根据测量对象不同可分为...
监控平台之nodejs模拟后端接口
github:可以下载进行实验 https://github.com/Mr-Shi-root/sdk-platform/tree/master 1.配置node环境,安装express cors body-parser babel/cors body-parser - node.js 中间件,用于处理 JSON, Raw, Text 和 URL 编码的数据。cookie-parse…...
TCP 协议详解
目录 一.定义 二.TCP 协议报文格式 三.确认应答(ACK)机制 四.捎带应答 五.连接管理机制 六.滑动窗口 七.快重传 八.拥塞控制 九.延时应答 十.面向字节流 十一.粘包问题 十二.异常情况 十三.TCP 小结 一.定义 传输控制协议(TCP,Transmissio…...
【转载】golang内存分配
Go 的分配采用了类似 tcmalloc 的结构.特点: 使用一小块一小块的连续内存页, 进行分配某个范围大小的内存需求. 比如某个连续 8KB 专门用于分配 17-24 字节,以此减少内存碎片. 线程拥有一定的 cache, 可用于无锁分配. 同时 Go 对于 GC 后回收的内存页, 并不是马上归还给操作系…...
TPM管理培训:学以致用,才是硬道理
全面生产维护(TotalProductiveMaintenance,TPM)作为一种先进的管理体系,正被越来越多的企业所采用,以期通过全员参与、全系统改善的方式,实现设备综合效率的最大化。然而,理论学习与实践应用之间往往存在鸿…...
2024年六月英语四级真题及解析PDF共9页
2024年六月英语四级真题及解析PDF共9页,真题就是最好的复习资料,希望对大家有所帮助。...
全球首个30米分辨率湿地数据集(2000—2022)
数据简介 今天我们分享的数据是全球30米分辨率湿地数据集,包含8种湿地亚类,该数据以0.5X0.5的瓦片存储,我们整理了所有属于中国的瓦片名称与其对应省份,方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...
将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?
Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...
代理篇12|深入理解 Vite中的Proxy接口代理配置
在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...
力扣-35.搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...
Android第十三次面试总结(四大 组件基础)
Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成,用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机: onCreate() 调用时机:Activity 首次创建时调用。…...
使用LangGraph和LangSmith构建多智能体人工智能系统
现在,通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战,比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...
Python 训练营打卡 Day 47
注意力热力图可视化 在day 46代码的基础上,对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...
自定义线程池1.2
自定义线程池 1.2 1. 简介 上次我们实现了 1.1 版本,将线程池中的线程数量交给使用者决定,并且将线程的创建延迟到任务提交的时候,在本文中我们将对这个版本进行如下的优化: 在新建线程时交给线程一个任务。让线程在某种情况下…...
2025 后端自学UNIAPP【项目实战:旅游项目】7、景点详情页面【完结】
1、获取景点详情的请求【my_api.js】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口(适配服务端返回 Token) export const login async (code, avatar) > {const res await http(/login/getWXSessionKey, {code,avatar}); };//…...
C++ Saucer 编写Windows桌面应用
文章目录 一、背景二、Saucer 简介核心特性典型应用场景 三、生成自己的项目四、以Win32项目方式构建Win32项目禁用最大化按钮 五、总结 一、背景 使用Saucer框架,开发Windows桌面应用,把一个html页面作为GUI设计放到Saucer里,隐藏掉运行时弹…...
