realpath 是什么
realpath 把相对路径与含软链接的路径解析成规范化的绝对路径,同时去掉路径中的点与点号段。需要为尚未创建的路径做规划时,可以用容错选项让不存在的层级也能正常解析。
基本信息
| 用途 | 解析并输出规范化绝对路径 |
|---|---|
| 语法 | realpath [选项] 路径... |
| 所属 | GNU coreutils |
| 常用能力 | 容错解析不存在的路径、输出相对路径 |
典型使用场景
- 脚本自举:先解析脚本真实位置,再切换工作目录
- 规划路径:目标还不存在时也要先算出绝对路径
- 路径对比:把两种写法的路径规范化后比较是否同一位置
- 生成相对路径:把绝对路径转换成相对指定目录的形式
- 排查软链接:确认某个路径最终指向哪里
常用示例
常用示例
realpath ./logs/../app/current
realpath -m /opt/app/v99/not-yet-created # 允许路径不存在
realpath --relative-to=/data /data/app/logs # 输出 app/logs
realpath -e ./maybe-missing # 严格要求全部存在
ls -l /opt/app/current # 对照软链接指向选项对照
| 选项 | 作用 | 注意 |
|---|---|---|
| 默认 | 解析软链接并规范化 | 要求路径各级存在 |
| -m | 容错解析 | 不存在的层级照常输出 |
| -e | 严格要求存在 | 任一层级缺失即报错 |
| 相对路径输出 | 相对指定目录计算 | 适合生成可移植路径 |
| 与解析链接命令对比 | 只解析软链接段 | 不做整体规范化 |
需要规范化的绝对路径时用它;只想看一段软链接指向时用解析链接命令更轻。
默认模式要求路径各级存在,为尚未创建的目录做规划时先加容错选项,否则直接报错。
路径规范化会去掉多余层级并解析中间的软链接,输出结果可能与书写形式差别很大。
输出结果可直接用于配置或比较:把两种写法都规范化后再比对,能立刻判断是否指向同一位置。