061 ln命令

命令说明

ln 用于创建链接:默认硬链接(同一 inode 的第二个名字),加 -s 创建符号链接(类似快捷方式,可跨文件系统、可链目录),是发布切换、目录迁移、兼容路径的核心手段。

语法

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

常用参数

参数说明
-s创建符号链接(soft link),最常用
-f链接名已存在时强制覆盖
-b覆盖前备份已存在的目标
-n把已存在的目录链接当普通文件处理(配合 -sf 改指向)
-v显示创建过程
-r创建相对路径符号链接(ln -s 的相对化)
-t 目录指定链接存放目录
-h作用于符号链接本身(同 find -H 语义,多用于删除/替换场景)

使用示例

$ ln -s /opt/app/v2.3 /opt/app/current

版本目录软链切换(发布系统标准玩法)

$ ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

设置系统时区

$ ln -s /data/large-dir /home/user/data

把大目录“映射”回家目录

$ ln file.txt file_hard.txt

创建硬链接(同 inode,不能用于目录)

$ ln -sfn /opt/app/v2.4 /opt/app/current

更新已存在目录软链的指向(-n 防穿透)

$ ls -l current

查看软链指向:current -> /opt/app/v2.3

$ find / -lname "*app*" 2>/dev/null

按名字模式查找符号链接

$ rm current

删除软链本身(千万别 rm current/ 带斜杠,会删目标内容)

实用技巧

  • 硬链接 vs 软链接:硬链接同 inode、不能跨文件系统、不能链目录、删原文件仍可读(链接数-1);软链接独立 inode 存路径、可跨盘可链目录、原文件删了变悬空链接(ls 红色闪烁)。
  • ln -s 的相对路径以链接文件所在目录为基准解析,写错基准目录是软链失效的头号原因;不确定就用绝对路径或 ln -sr。
  • 替换已有目录软链必须用 -n(-sfn),否则新链接会被创建到旧目标目录里面,产生 current/current/... 套娃。
  • 删除软链用 rm 链接名 且不带末尾斜杠;带斜杠等于操作目标目录内部,误删即事故。
  • inode 概念:ls -i 看 inode,stat file 看链接数;df -i 耗尽时即使磁盘有空间也无法建文件。