约 6286 字

约 31 分钟

#Bash 的 ln 命令

ln [OPTION] SRC DEST

功能

创建文件的硬链接或软链接(符号链接)。

类型

可执行文件(/usr/bin/ln),属于 coreutils。

参数

  • OPTION 选项:
    • --backup[=CONTROL] - 选择怎样备份被覆盖的目标文件
    • -b - 备份被覆盖的目标文件
    • -d, -F, --directory - 允许超级用户尝试创建目录的硬链接
    • -f, --force - 强制操作,目标存在且无法打开时会尝试将其删除
    • -i, --interactive - 覆盖前提示
    • -L, --logical - 源文件是符号链接时,链接该链接的源文件,而不是该链接自身
    • -n, --no-dereference - 目标是指向目录的符号链接时将其视作普通文件进行覆盖
    • -P, --physical - 源文件是符号链接时,直接创建指向该链接的硬链接
    • -r, --relative - 将源文件的路径转换为参照符号链接所在目录的相对路径(与 -s 一起使用)
    • -s, --symbolic - 创建符号链接,而不是硬链接
    • -S, --suffix=SUFFIX - 使用 SUFFIX 作为备份文件的后缀;默认后缀为 ~
    • -t, --target-directory=DIRECTORY - 指定要创建链接的目录
    • -T, --no-target-directory - 将 DEST 视为文件(如果 DEST 是目录,则进行覆盖而非复制到它内部)
    • -v, --verbose - 打印详细信息
    • --help - 显示帮助
    • --version - 显示版本
  • SRC - 源文件
  • DEST - 目标文件(硬链接)

#示例

绝对路径

$ ln -s /opt/xxxx/cmd /usr/bin/        # 将 /opt/xxxx/cmd 链接到 /usr/bin/cmd
$ ls -l /usr/bin/cmd
lrwx-wxr-x 1 root root 5 Nov 17 12:12 /usr/bin/cmd -> /opt/xxxx/cmd
  • /usr/bin/cmd 是链接到 /opt/xxxx/cmd 的软连接

相对路径

$ ln -sr ./cmd ./dir        # 将 ./cmd 链接到 ./dir/cmd
$ ls -l ./dir/cmd
lrwx-wxr-x 1 root root 5 Nov 17 12:12 ./dir/cmd -> ../cmd
  • ./dir/cmd 是链接到 ../cmd 的软连接

错误示范

$ ln -s ./cmd ./dir        # 将 ./cmd 链接到 ./dir/cmd
$ ls -l ./dir/cmd
lrwx-wxr-x 1 root root 5 Nov 17 12:12 ./dir/cmd -> ./cmd
  • ./dir/cmd 是链接到 ./cmd 的软连接

软连接在解析时相对路径参照自身所在目录,因此无法找到源文件,./cmd 指向自身导致无限递归错误。

#相关命令

命令说明
link创建文件的硬链接
readlink获取符号链接的源文件

#推荐阅读

#手册

更新: 2026/1/18

作者: PlanC

创建: 2025/11/17