约 4740 字

约 24 分钟

#Bash 的 realpath 命令

realpath [OPTION]... FILE...

功能

解析路径。

类型

可执行文件(/usr/bin/realpath),属于 coreutils。

参数

  • OPTION 选项:
    • -e, --canonicalize-existing - 路径的所有组成部分都必须存在
    • -m, --canonicalize-missing - 路径的所有组成部分都可以不存在
    • -L, --logical - 逻辑路径;在跟踪符号链接之前解析 ..
    • -P, --physical - 物理路径;在跟踪符号链接之后解析 ..(默认)
    • -q, --quiet - 忽略大部分错误信息
    • --relative-to=DIR - 打印相对于 DIR 的相对路径
    • --relative-base=DIR - 如果路径在 DIR 内,则相对路径,否则打印绝对路径
    • -s, --strip, --no-symlinks - 不展开符号链接
    • -z, --zero - 以空字符(\0)作为行的结尾,而不是换行符(\n)
    • --help - 显示帮助
    • --version - 显示版本
  • FILE - 文件路径

#示例

绝对路径

$ pwd                                                   # 查看当前路径
/home/user/primers
$ realpath -m ./file.txt
/home/user/primers/file.txt
$ realpath -m ../data/../config/./settings.yaml
/home/user/config/settings.yaml

相对路径

$ pwd                                                   # 查看当前路径
/home/user/primers
$ realpath -m --relative-to=/home/user ./file.txt       # 打印相对于 /home/user 的路径
primers/file.txt
$ realpath -m --relative-to=/home/user2 ./file.txt      # 打印相对于 /home/user2 的路径
../user/primers/file.txt
$ realpath -m --relative-base=/home/user ./file.txt     # 在 /home/user 内,打印相对于 /home/user 的路径
primers/file.txt
$ realpath -m --relative-base=/home/user2 ./file.txt    # 不在 /home/user 内,打印绝对路径
/home/user/primers/file.txt

符号链接

$ pwd                                                   # 查看当前路径
/home/user/primers
$ ln -s /usr/lib lib                                    # 创建符号链接
$ ls -l lib
lrwxrwxrwx 1 planc planc 8 Oct 31 14:06 lib -> /usr/lib
$ realpath ./lib                                        # 跟踪符号链接(默认)
/usr/lib
$ realpath -s ./lib                                     # 不跟踪符号链接
/home/user/primers/lib
$ realpath ./lib/..                                     # 在跟踪符号链接之后解析 ..(默认)
/usr
$ realpath -L ./lib/..                                  # 在跟踪符号链接之前解析 ..
/home/user/primers

#相关命令

命令说明
basename从文件路径中去除目录和后缀
dirname从文件路径中提取目录

#推荐阅读

#手册

更新: 2026/1/18

作者: PlanC

创建: 2025/10/31