跳到主要内容

Linux 文件链接 ln

1. 命令简介 🐾

ln 命令用于创建 硬链接符号链接(软链接),是 Linux 文件管理的重要组成部分。通过创建链接,我们可以方便地访问或备份文件,而无需复制文件本身,从而节省磁盘空间。💾 不过,使用时需要注意链接类型以及它们各自的特点和限制。👀

硬链接和符号链接的区别 🧐

硬链接是指向同一文件的多个文件名。它们共享相同的 inode 号,意味着它们实际上是同一个文件的多个入口。修改任意一个硬链接的内容会影响所有链接。🔗

符号链接类似于 Windows 中的快捷方式。它是一个独立的文件,指向另一个文件或目录的路径。符号链接不会共享相同的 inode,删除源文件后,符号链接将变为“断链”。⚠️

2. 命令参数 ✨

ln [选项] 源文件 目标文件

常用选项和参数:

  • -s, --symbolic:创建符号链接(软链接)。如果不使用 -s,则默认创建硬链接。🔄
  • -b, --backup:在覆盖前进行备份。📂
  • -f, --force:如果目标文件已存在,则删除它并创建新的链接。💥
  • -i, --interactive:交互式地覆盖目标文件之前询问用户。🙋‍♂️
  • -n, --no-dereference:将符号链接视为常规文件。🔍
  • -v, --verbose:显示详细信息。📜

3. 命令示例 🌟

创建链接

# 创建硬链接
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

注意事项 ⚠️

  • 删除文件
    • 硬链接:删除原始文件并不会影响硬链接文件,因为它们指向同一个物理位置。🛑
    • 符号链接:如果原始文件被删除,符号链接将失效,变成“断链”。💔
  • 跨文件系统
    • 硬链接:目标文件和链接文件必须在同一文件系统中。🚧
    • 符号链接:可以跨越文件系统。🌐
  • 目录的链接
    • 硬链接:传统上不能创建目录的硬链接,因为这可能会导致文件系统循环问题。⚠️
    • 符号链接:符号链接可以轻松指向目录,非常适合创建快捷方式和便捷访问目录。📂

掌握 ln 命令,链接文件不再麻烦,轻松管理文件和目录,节省空间,提升效率!✨希望这篇教程对你有帮助!如果觉得有用,别忘了收藏在线知识库 www.zxzsk.com 哦!😊