「realpath(1)」-

打印解析出来的路径

命令语法格式

realpath [OPTION]… FILE…

命令描述

realpath展开所有符号链接,并解析路径中的‘/./’‘/../’以及额外的‘/’字符,。默认情况下,除指定文件的最后一个部分外,所有部分都必须存在。

文件名的规范化功能与readlink命令的功能重叠。这是用于规范化的首选命令,因为它是更合适和标准的名称。此外,该命令还支持相对文件名处理功能。

-e, –canonicalize-existing
确保所指定的文件名的所有部分都存在。如果任何部分缺失或不可用,则realpath将输出诊断信息(除非指定-q选项),并使用非零状态码退出。尾部斜线要求名称解析为目录。

-m, –canonicalize-missing
如果指定文件名的任何部分缺失或不可用,则将其视为目录。

-L, –logical
在指定的文件名中的符号链接会被解析,但是是在处理任何后续的’..’组件后再解析它们。

-P, –physical
在指定的文件名中的符号链接会被解析,但是是在处理任何后续的’..’组件之前先这些符号链接。这也是默认的行为。

-q, –quiet
抑制错误信息。

–relative-to=FILE
打印相对于指定目录的解析出的文件名。注意这个选项尊重与文件存在有关的-m和-e选项。

–relative-base=FILE
如果文件是FILE的子目录或文件,则将解析的文件名打印为相对值。否则,将解析的文件名称打印为绝对路径。注意这个选项尊重与文件存在有关的-m和-e选项。

-s, –strip, –no-symlinks
不要解析符号链接。只解析对’/./’、’/../’的引用,并删除多余的’/’字符。通常情况下,realpath会打印符号链接所指向的文件或目录的绝对路径。使用该选项后,直接打印符号链接的绝对路径。

当与-m选项结合使用时,realpath仅对文件名进行操作,并且不会访问任何实际的文件。通常,没有-m时,如果文件不存在,则realpath会进行提示。

-z, –zero
以NUL分隔输出的行。没有指定该选项时,使用NEWLINE来分隔行。

–help
显示帮助信息并退出。

–version
显示版本信息并退出。

使用示例

默认情况下,真实路径打印给定文件的绝对文件名(符号链接会被解析,比如示例中的word):

# cd /root/.local/

# realpath /usr/bin/sort /tmp/foo /usr/share/dict/words 1.txt

/usr/bin/sort

/tmp/foo

/usr/share/dict/american-english

/root/.local/1.txt

如果使用了–relative-to,则打印的是相对于给出目录的路径:

# realpath –relative-to=/usr/bin /usr/bin/sort /tmp/foo /usr/share/dict/words 1.txt

sort

../../tmp/foo

../share/dict/american-english

../../root/.local/1.txt

使用–relative-base时,如果解析的文件名低于给定的基本目录,则会打印相关的文件名。对于基本目录之外的文件,将打印绝对文件名称:

# realpath –relative-base=/usr/ /usr/bin/sort /tmp/foo /usr/share/dict/words 1.txt

bin/sort

/tmp/foo

share/dict/american-english

/root/.local/1.txt

当同时使用–relative-to=DIR1和–relative-base=DIR2时,如果文件名位于DIR2之下,则相对于DIR1打印文件名。如果这些文件不在DIR2下面,它们将被打印为绝对路径:

# realpath –relative-to=/usr/bin –relative-base=/usr/ /usr/bin/sort /tmp/foo /usr/share/dict/words 1.txt

sort

/tmp/foo

../share/dict/american-english

/root/.local/1.txt

当使用–relative-to=DIR1和–relative-base=DIR2时,DIR1必须是DIR2的子目录。否则,realpath打印绝对文件名称。

相关手册

readlink(1), readlink(2), realpath(3)

完整在线文档:http://www.gnu.org/software/coreutils/realpath

查看info手册:info ‘(coreutils) realpath invocation’

参考文献

  • man 1 realpath, verison GNU coreutils 8.26

更新日志

  • 06/02/2018 创建文章