ln -s 软链接使用指南与常见误区

在 Linux 下,ln -s 用来创建软链接(也叫符号链接),作用类似 Windows 里的快捷方式:它指向真实的源文件或源目录,访问链接就等于访问源。本文整理了软链接的常见用法、容易踩的坑,以及它与硬链接的区别。

基本用法

创建软链接的命令格式是 ln -s 源文件 软链接文件

ln -s 源文件 软链接文件

软链接既可以指向文件,也可以指向目录,这是它比硬链接灵活的地方之一。

一个常见的误区

软链接既然是”链接”,就意味着软链接文件在创建之前不可以已经存在。如果目标位置已经有一个同名文件,ln -s 会在该文件内部再建立链接(或直接报错,视选项而定),结果往往出乎意料。所以创建前要确认目标路径是空的,必要时先删除或改名。

软链接的删除与失效

  • 删除:用 rm 直接删除软链接即可,源文件不受任何影响。
  • 失效:当源文件被删除、或者路径发生改变时,软链接就失效了。此时用 ls -l 查看,会看到链接指向的源文件名显示为红色背景并不断闪烁,这是 shell 提示”链接已断”的典型标志。

软链接与硬链接的区别

对比项 软链接(ln -s 硬链接(ln
inode 有自己独立的 inode 与源文件共用同一个 inode
指向目录 可以指向目录 不可以指向目录
跨文件系统 可以 不可以
源文件删除后 链接失效 只要还有一个硬链接,数据仍可访问

理解关键在于 inode:软链接是一个独立文件,内容里存的是源文件的路径;硬链接则只是同一个 inode 的另一个名字,两者地位完全平等。

一个有趣的玩法

硬链接虽然不能指向目录,但可以”曲线救国”:先为目录创建软链接,再为这个软链接创建硬链接。

示例:/home/oldboy 是一个目录:

ln -s /home/oldboy /tmp/oldmy   # 创建指向目录的软链接,隐藏源文件的真实路径和名称
ln /tmp/oldmy /oldyou           # 用硬链接创建这个软链接的副本

这种用法常见的应用场景是隐藏源文件的真实路径和名称,或者在软件升级时通过切换软链接指向新版本目录,而不必改动其他配置。

ln 常用选项

选项 含义
-b 删除、覆盖以前建立的链接
-d 允许超级用户制作目录的硬链接
-f 强制执行
-i 交互模式,文件存在则提示用户是否覆盖
-n 把符号链接视为一般目录
-s 软链接(符号链接)
-v 显示详细的处理过程

   转载规则


《ln -s 软链接使用指南与常见误区》 吴杭沉 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
用 sed + grep 批量替换目录下文件中的字符串 用 sed + grep 批量替换目录下文件中的字符串
改代码时经常遇到这种需求:把整个工程里某个旧字符串全部替换成新的,比如交叉编译工具链从 arm-none-linux-gnueabi- 换成 arm-linux-。手工逐个文件改既慢又容易漏,用 sed 配合 grep 一条命令就能搞定。
2020-12-06
下一篇 
Shell 分割字符串的常用方法 Shell 分割字符串的常用方法
处理日志、配置文件或命令输出时,按分隔符把一个字符串切成几段是最常见的操作之一。Shell 下能做这件事的工具不少:cut、awk、IFS、参数展开、tr 各有适用场景,本文逐一给出示例。 以下示例统一使用这个字符串: str="192.1
2020-11-22
  目录