用ls -l可快速识别:软链接权限首字符为“l”,硬链接为“-”且链接数大于1;但须用ls -i比对inode编号完全一致才能确认硬链接;file命令显示“symbolic link”即软链接;readlink有输出为软链接,无输出则非软链接。

在Mac终端里快速识别一个文件是软链接还是硬链接,避免误删源文件或误判文件归属,是日常运维和开发中必须掌握的基础能力。
用ls -l命令一眼识别链接类型
在终端中执行 ls -l 文件名,观察输出最左侧的权限字段首字符:
若显示为 【l】(小写字母L),例如 lrwxr-xr-x,说明这是软链接;
若显示为 【-】(短横线),例如 -rw-r--r--,且第3列数字大于1(如 2),大概率是硬链接——但需进一步验证;
注意:仅凭权限位不能100%断定硬链接,因为普通文件权限也是以 - 开头,必须结合inode编号交叉确认。
通过inode编号确认是否为硬链接
硬链接的本质是多个文件名指向同一个inode。因此,只要两个文件的inode编号一致,它们就是硬链接关系。
第一步:用 ls -i 源文件 查看源文件的inode编号,记下那一串数字;
第二步:用 ls -i 链接文件 查看目标文件的inode编号;
第三步:对比两个数字是否完全相同——【必须完全相同才可确认为硬链接】;
如果不同,哪怕权限、大小、内容一模一样,也只是普通副本或软链接。
用file命令直接读取文件属性
方法一:运行 file 文件名
若返回类似 xxx: symbolic link to /path/to/original,就是软链接;
若返回类似 xxx: data 或具体类型(如 ASCII text)且无“symbolic link”字样,则不是软链接,可能是硬链接或普通文件;
方法二:对疑似硬链接执行 file -i 文件名,观察MIME类型是否与源文件一致——硬链接必定共享全部元数据,包括MIME类型;
这一步操作起来很简单,直接把命令敲进去回车就行,不需要额外参数或配置。
用readlink命令探测软链接真实路径
运行 readlink 文件名:
如果输出一个路径(如 /Users/me/config.json),说明该文件是软链接,且能成功解析;
如果输出为空,说明它不是软链接——但也可能是软链接指向了不存在的路径(即断链),此时需加 -f 参数重试:readlink -f 文件名;
【readlink 对硬链接无任何输出,也不会报错】,这是它和软链接最干净的区分方式之一。











