ln命令

ln 命令 #

ln命令用于在文件之间创建链接。在 Linux 中,链接有两种类型:硬链接和符号(软)链接。硬链接是指向文件系统中文件的另一个引用,而符号链接是指向另一个文件路径的特殊文件。

语法 #

ln [选项] 目标 [链接名]
ln [选项] 目标... 目录

常用选项 #

选项 描述
-s, --symbolic 创建符号链接而不是硬链接
-f, --force 强制创建链接,如有必要则删除已存在的目标文件
-i, --interactive 覆盖前提示
-n, --no-dereference 如果目标是指向目录的符号链接,则将其视为普通文件
-r, --relative 创建相对符号链接
-b, --backup 为每个已存在的目标文件创建备份
-v, --verbose 显示每个链接的名称
-t, --target-directory=目录 指定创建链接的目录

常见用法 #

1. 创建硬链接 #

ln 源文件 链接名

例如:

ln file.txt hardlink.txt

这将创建一个指向 file.txt 的硬链接 hardlink.txt

2. 创建符号链接(软链接) #

ln -s 源文件或目录 链接名

例如:

ln -s file.txt symlink.txt
ln -s /path/to/directory symlink_dir

这将创建指向 file.txt 的符号链接 symlink.txt 和指向目录的符号链接 symlink_dir

3. 强制创建链接(覆盖已存在的文件) #

ln -sf 源文件 链接名

4. 创建相对符号链接 #

ln -sr 源文件 链接名

这将创建一个相对路径的符号链接,这在移动目录结构时很有用。

5. 在指定目录中创建链接 #

ln -s 源文件 目标目录/

或者使用 -t 选项:

ln -s -t 目标目录/ 源文件

6. 创建多个链接到一个目录 #

ln -s 文件1 文件2 文件3 目标目录/

硬链接与符号链接的区别 #

硬链接 #

  • 只能链接到文件,不能链接到目录
  • 不能跨文件系统
  • 删除源文件不会影响硬链接
  • 所有硬链接都有相同的 inode 号
  • 更新任何一个硬链接都会更新所有链接

符号链接 #

  • 可以链接到文件或目录
  • 可以跨文件系统
  • 删除源文件会导致符号链接失效(成为"断开的链接")
  • 符号链接有自己的 inode 号
  • 本质上是一个包含目标路径的特殊文件

实用示例 #

1. 为常用命令创建快捷方式 #

ln -s /usr/bin/python3 ~/bin/python

这将在 ~/bin 目录中创建一个指向 python3 的符号链接,命名为 python

2. 为配置文件创建备份链接 #

ln ~/.bashrc ~/.bashrc.backup

这将创建 .bashrc 文件的硬链接备份。

3. 创建指向目录的符号链接 #

ln -s /var/www/html ~/web

这将创建一个指向 /var/www/html 的符号链接 ~/web

4. 使用相对路径创建符号链接 #

ln -sr ../shared/config.ini ./config.ini

这将创建一个使用相对路径的符号链接。

5. 更新符号链接 #

ln -sf /new/path/file.txt existing_link

这将更新现有的符号链接 existing_link 指向新的路径。

提示 #

  • 使用 ls -l 命令可以查看文件的链接信息
  • 符号链接以 l 开头显示在 ls -l 的输出中
  • 使用 readlink 命令可以查看符号链接指向的目标
  • 创建符号链接时,最好使用绝对路径以避免链接断开
  • 如果需要移动链接结构,使用相对符号链接(-r 选项)
  • 硬链接共享相同的 inode 和数据块,因此节省磁盘空间
  • 符号链接占用少量额外空间来存储目标路径