linux:ln用法详解

饭宝  金牌会员 | 2024-9-12 19:59:48 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 699|帖子 699|积分 2097


1. 描述

在 Linux 系统中,ln 下令用于创建硬链接(Hard Link)或符号链接(Symbolic Link,也称为软链接)。链接的作用是创建文件或目次的别名,而不复制文件或目次本身。硬链接和符号链接有差别的功能和利用场景。
2. 语法

ln 下令的基本语法格式如下:
  1. ln [选项] 源文件 目标文件
复制代码
此中,源文件 是你希望创建链接的文件或目次,目标文件 是你想创建的链接的路径。
完备语法如下:
  1. Usage: ln [OPTION]... [-T] TARGET LINK_NAME
  2.   or:  ln [OPTION]... TARGET
  3.   or:  ln [OPTION]... TARGET... DIRECTORY
  4.   or:  ln [OPTION]... -t DIRECTORY TARGET...
  5. In the 1st form, create a link to TARGET with the name LINK_NAME.
  6. In the 2nd form, create a link to TARGET in the current directory.
  7. In the 3rd and 4th forms, create links to each TARGET in DIRECTORY.
  8. Create hard links by default, symbolic links with --symbolic.
  9. By default, each destination (name of new link) should not already exist.
  10. When creating hard links, each TARGET must exist.  Symbolic links
  11. can hold arbitrary text; if later resolved, a relative link is
  12. interpreted in relation to its parent directory.
  13. Mandatory arguments to long options are mandatory for short options too.
  14.       --backup[=CONTROL]      make a backup of each existing destination file
  15.   -b                          like --backup but does not accept an argument
  16.   -d, -F, --directory         allow the superuser to attempt to hard link
  17.                                 directories (note: will probably fail due to
  18.                                 system restrictions, even for the superuser)
  19.   -f, --force                 remove existing destination files
  20.   -i, --interactive           prompt whether to remove destinations
  21.   -L, --logical               dereference TARGETs that are symbolic links
  22.   -n, --no-dereference        treat LINK_NAME as a normal file if
  23.                                 it is a symbolic link to a directory
  24.   -P, --physical              make hard links directly to symbolic links
  25.   -r, --relative              create symbolic links relative to link location
  26.   -s, --symbolic              make symbolic links instead of hard links
  27.   -S, --suffix=SUFFIX         override the usual backup suffix
  28.   -t, --target-directory=DIRECTORY  specify the DIRECTORY in which to create
  29.                                 the links
  30.   -T, --no-target-directory   treat LINK_NAME as a normal file always
  31.   -v, --verbose               print name of each linked file
  32.       --help     display this help and exit
  33.       --version  output version information and exit
复制代码
2.1 硬链接(Hard Link)

   硬链接的特点:
  

  • 硬链接与原文件共享相同的 inode 和数据块。
  • 硬链接不能凌驾文件系统。
  • 删除硬链接或原文件,文件数据依然存在,除非全部链接都被删除。
  • 硬链接只能针对文件,不能用于目次。
    硬链接是文件在文件系统中的一个指针。它们共享相同的 inode 号,指向文件的实际数据块。因此,硬链接和原始文件实际上是同一个文件,删除此中一个不会影响另一个。
  用法:
  1. ln 源文件 目标文件
复制代码
示例:
  1. 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 号,而是存储原文件的路径。
  用法:
  1. ln -s 源文件 目标文件
复制代码
示例:
  1. 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)创建一个硬链接
  1. ln file1.txt file2.txt
复制代码
这会创建 file2.txt,它是 file1.txt 的硬链接。它们指向同一个物理数据,删除此中一个不会影响另一个。
(2)创建一个符号链接
  1. ln -s /path/to/file1.txt /path/to/file2.txt
复制代码
这会创建 file2.txt,它是 file1.txt 的符号链接。file2.txt 是指向 file1.txt 的路径引用。
(3)强制覆盖已存在的符号链接
  1. ln -sf newfile.txt link.txt
复制代码
如果 link.txt 已经存在,这条下令将强制覆盖它,指向新的文件 newfile.txt。
(4) 创建相对路径的符号链接
  1. ln -sr /path/to/original.txt link.txt
复制代码
这将创建一个相对路径的符号链接。如果 original.txt 相对于符号链接所在位置的路径关系发生变化,符号链接仍然可以正确指向目标文件。
(5)为目次创建符号链接
  1. ln -s /home/user/mydir /tmp/mydirlink
复制代码
这会创建一个名为 /tmp/mydirlink 的符号链接,指向 /home/user/mydir 目次。符号链接可以用于目次,而硬链接不能。
(6)检察链接文件信息
利用 ls -l
可以检察文件链接的信息:
  1. ls -l
复制代码
输出示例:
  1. lrwxrwxrwx 1 user user 11 Aug 14 11:32 symlink.txt -> original.txt
复制代码
在符号链接的情况下,输出中会表现符号链接指向的目标文件(symlink.txt -> original.txt)。l 表现这是一个符号链接。
(7) 删除符号链接
删除符号链接只需利用 rm 下令:
  1. rm symlink.txt
复制代码
这只会删除符号链接文件本身,不会影响原始文件。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

饭宝

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表