一、命令简介
ln
命令用于创建 硬链接
或 符号链接
(软链接),是 Linux 文件管理的一个重要组成部分。通过创建链接,可以方便地访问或备份文件,而无需复制文件本身,从而节省磁盘空间。不过,使用时需要注意链接类型以及它们各自的特点和限制。
硬链接和符号链接的区别
1.硬链接 (Hard Link)
硬链接是指向同一文件的多个文件名。它们共享相同的 inode 号,意味着它们实际上是同一个文件的多个入口。修改任意一个硬链接的内容会影响所有链接。
2.符号链接 (Symbolic Link)
符号链接类似于 Windows 中的快捷方式。它是一个独立的文件,指向另一个文件或目录的路径。符号链接不会共享相同的 inode,删除源文件后,符号链接将变为“断链”。
二、命令参数
ln [选项] 源文件 目标文件
选项和参数
-
-s, --symbolic
:创建符号链接(软链接),不使用 -s 则创建硬链接。 -
-b, --backup
:在覆盖前进行备份。 -
-f, --force
:如果目标文件已存在,则删除它并创建新的链接。 -
-i, --interactive
:交互式地覆盖目标文件之前询问用户。 -
-n, --no-dereference
:将符号链接视为常规文件。 -
-v, --verbose
:显示详细信息。
三、命令示例
创建链接
ln source.txt hardlink.txt
# 创建符号链接
ln -s source.txt symbolink.txt
# 强制创建符号链接,替换已存在的符号链接
ln -sf source.txt symbolink.txt
# 创建硬链接,不覆盖现有文件
ln -n source.txt hardlink.txt
# 创建符号链接,并显示详细信息
ln -sv source.txt symbolink.txt
查看链接
ls
可以查看文件的链接类型和硬链接数量
ls -l /bin/ #命令:查看硬链接数量,输出的第二列就是文件的链接数
lrwxrwxrwx 1 root root 8 Mar 23 2022 nisdomainname -> hostname #软链接,指向hostname
-rwxr-xr-x 1 root root 22760 Mar 23 2022 hostname #hostname只有一个硬链接,就是它本身
-rwxr-xr-x 1 root root 68104 Jan 8 2024 mkdir #一个硬链接
-rwxr-xr-x 2 root root 137584 Feb 6 2021 unpigz #两个硬链接
find
筛选 类型为 软链接
文件
ls -l `find /bin/ -type l` #命令:这里将find查找到的目录交给ls显示详情
lrwxrwxrwx 1 root root 26 Jan 23 2024 /bin/addr2line -> x86_64-linux-gnu-addr2line
lrwxrwxrwx 1 root root 10 Apr 14 2023 /bin/apport-collect -> apport-bug
lrwxrwxrwx 1 root root 6 Mar 18 2022 /bin/apropos -> whatis
lrwxrwxrwx 1 root root 18 Oct 24 2023 /bin/apt-add-repository -> add-apt-repository
...
readlink
查看符号链接-> 指向的源文件
readlink /bin/addr2line #命令
x86_64-linux-gnu-addr2line
注意
删除文件
- 硬链接:删除原始文件并不会影响硬链接文件,因为它们指向同一个物理位置。
- 符号链接:如果原始文件被删除,符号链接将失效。
跨文件系统
- 硬链接:目标文件和链接文件必须在同一文件系统中。
同一文件系统通指在同一个分区、挂载点、逻辑卷或 LVM 中。
可以用 df 命令列出文件系统。 - 符号链接可以跨越文件系统。
- 硬链接:目标文件和链接文件必须在同一文件系统中。
目录的链接
- 硬链接:⚠️ 传统上不能创建目录的硬链接,因为这可能会导致文件系统循环问题。不过,某些文件系统支持目录的硬链接,但这是很少见的。
- 符号链接: 符号链接可以轻松指向目录,这在创建快捷方式和便捷访问目录时非常有用。
本文共 731 个字数,平均阅读时长 ≈ 2分钟
评论 (0)