软链接和硬链接的核心区别在于:软链接是独立文件,存储目标路径,可跨文件系统、链接目录;硬链接共享同一inode,仅限同分区普通文件,不可链接目录。

要在Linux命令行中让多个路径指向同一份文件或目录内容,必须区分软链接(符号链接)和硬链接的适用场景与操作方式——软链接可跨分区、可指向目录;硬链接只能指向文件、不能跨分区、也不能指向目录。
创建目录的软链接
软链接是唯一能安全指向目录的链接类型,它本质是一个包含路径字符串的特殊文件。
第一步:确认目标目录存在且路径准确,例如 /home/user/project。
第二步:执行命令 ln -s /home/user/project /tmp/myproject,其中 -s 是强制要求,缺省会创建硬链接并报错。
第三步:验证链接是否生效,运行 ls -l /tmp/myproject,输出应显示类似 lrwxrwxrwx 1 user user 20 Jul 24 04:15 /tmp/myproject -> /home/user/project 的内容,箭头右侧必须是你指定的绝对路径或相对路径。
【注意:若目标目录不存在,软链接仍会创建成功,但属于“悬空链接”,后续访问将报错 No such file or directory】
创建文件的硬链接
硬链接直接指向文件的 inode,因此原文件删除后数据依然可通过硬链接访问,但仅适用于普通文件。
方法一:基础语法创建
执行 ln source.txt hardlink.txt,无需任何参数,系统自动创建硬链接。
方法二:强制覆盖已有同名文件
如果 hardlink.txt 已存在,加 -f 参数: ln -f source.txt hardlink.txt,否则命令会失败并提示 “File exists”。
【硬链接无法对目录创建,尝试执行 ln /some/dir dir_link 会直接报错:hard link not allowed for directory】
验证链接类型与底层信息
运行 ls -li 文件名 查看 inode 编号和链接数:
硬链接与源文件显示相同 inode 号,且链接数 ≥2;
软链接自身有独立 inode,末尾带 -> 指向目标路径;
删除源文件后,硬链接仍可读取内容,软链接则变为红色闪烁状态(在支持颜色的终端中),cat 会提示 No such file or directory。











