当前位置: 首页 > news >正文

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.txtoriginal.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.txtsymlink.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

这只会删除符号链接文件本身,不会影响原始文件。

http://www.lryc.cn/news/430728.html

相关文章:

  • 0基础跟德姆(dom)一起学AI Python进阶02-Python面向对象高级
  • 【深度学习】softmax 回归的从零开始实现与简洁实现
  • Sollong、IO.NET和 Solana,为何参加 WebX 2024活动?
  • 3个免费好用的网站,可以转换PDF,提取MP3
  • PHP智能匹配轻松预订自习室在线订座系统小程序源码
  • 构建高效医护人员排班系统:Spring Boot框架的优势
  • 深度学习——引言
  • 安装Android Studio及第一个Android工程可能遇到的问题,gradle下载过慢、sync失败?
  • 密码学---常见的其他密码
  • Mysql8 主从复制主从切换(超详细)
  • 8月29日wpf
  • Android经典实战之SurfaceView原理和实践
  • 蜜罐的识别
  • 传感与检测技术
  • 监控平台之nodejs模拟后端接口
  • TCP 协议详解
  • 【转载】golang内存分配
  • TPM管理培训:学以致用,才是硬道理
  • 2024年六月英语四级真题及解析PDF共9页
  • 自闭症儿童语言干预
  • webpack基本使用(基础配置)
  • 在js渲染的dom中的事件中传递对象
  • 服务器加速器如何应对大规模并行计算需求
  • C++/Qt 多媒体(续四)
  • 怎样把flv转换成mp4格式?8种可以推荐的视频转换方法
  • 【2024数学建模国赛赛题解析已出】原创免费分享
  • Windows安装使用Docker
  • 【wsl2】从C盘迁移到G盘
  • 低代码技术新趋势——逆向工程
  • HTTP 二、进阶