简明Linux命令行笔记:ln
为文件建立链接
ln [options] existing-file [new-link]
ln [options] existing-file-list directory
ln可以为一个或多个文件创建硬链接或符号(软)链接。对于目录,只能创建符号链接,而不能创建硬链接
参数
第一种格式:existing-file 是要创建链接的文件的路径名,new-link 是新链接的路径名。当创建符号链接时,existing-file 可以是目录。
如果省略new-link,ln就在工作目录中为existing-file创建一个链接,新链接使用与existing-file相同的文件名
第二种格式:existing-file-list 是要创建链接的普通文件的路径名列表,ln将在目录directory中创建新的链接,链接名与原文件名相同
选项
-b 如果需要创建的目标链接已存在相同文件名,则备份
-f 强制创建目标链接
-i 覆盖相同文件名时提示
-s 创建符号链接
注意
硬链接:默认情况下,ln用来创建硬链接,硬链接与原始文件无法区分且无法指向目录。同一个文件的所有硬链接必须位于相同的文件系统中,
符号链接:符号链接可以指向目录,并且能够位于不同的文件系统中
示例
ln 创建硬链接
$ ln /home/siu/BackupName.sql . $ ls -l 总用量 0 -rw-r--r-- 2 siu siu 0 1月 7 13:01 BackupName.sql
这里在当前目录下创建了一个文件硬链接,后面的.也可以省略
ln -s 创建符号链接
$ ln -s /tmp/ ./abc $ ls -l 总用量 0 lrwxrwxrwx 1 siu siu 5 1月 8 20:07 abc -> /tmp/
此处为/tmp创建了一个符号链接/abc
ln -sb
$ ln -sb aa bb $ ls -l 总用量 0 -rw-r--r-- 1 siu siu 0 1月 8 20:11 aa lrwxrwxrwx 1 siu siu 2 1月 8 20:11 bb -> aa -rw-r--r-- 1 siu siu 0 1月 8 20:11 bb~
创建符号链接,并备份已有的文件
ln -sf
$ ln -s aa cc ln: 无法创建符号链接"cc": 文件已存在 $ ln -sf aa cc $ ls -l 总用量 0 -rw-r--r-- 1 siu siu 0 1月 8 20:11 aa lrwxrwxrwx 1 siu siu 2 1月 8 20:11 bb -> aa -rw-r--r-- 1 siu siu 0 1月 8 20:11 bb~ lrwxrwxrwx 1 siu siu 2 1月 8 20:13 cc -> aa
强制创建符号链接
ln -si
$ ln -si aa bb ln:是否替换"bb"? y $ ls -l 总用量 0 -rw-r--r-- 1 siu siu 0 1月 8 20:14 aa lrwxrwxrwx 1 siu siu 2 1月 8 20:14 bb -> aa
创建符号链接时进行提示
Tips
1.硬链接通常和普通文件一样,无法区分其是否为链接
2.硬链接大小属性和原文件一样,如果删除原文件,硬链接同样可以使用
3.硬链接有一定局限性,因此符号链接适用范围更广
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构