一、目的
在linux系统中有绝对路径、相对路径,还有符号链接,我们在shell脚本中获取一个文件或者路径的绝对路径名称,这个时候就需要realpath命令。
本篇主要介绍realpath命令的相关内容。
二、介绍
realpath命令主要功能是解析给定的路径(相对路径、绝对路径、符号链接)并返回该路径的真实的绝对路径。这个命令可以解决符号链接(symlinks)、相对路径以及其它可能导致路径不明确的问题。
注意
上图中红色高亮部分强调了提供的参数(即路径或者文件名)中的除了最后一部分外,其他前级路径必须存在。
上图中红色高亮部分中由于我们系统上不存在"realpathx"这个前级路径,故realpath直接返回错误并打印。
如果禁止这个错误信息打印可以添加"-q"选项
通过查询"$?"这个特殊的预置变量,我们可以查看上一条命令的执行结果,上图中返回1,说明realpath执行失败。
使用示例
realpath /path/to/a/directory/or/file #绝对路径下的文件
realpath /path/to/a/directory/or/path #绝对路径
realpath ./file #相对路径的文件
realpath ../file #相对路径的文件
realpath ./path #相对路径
realpath ../path #相对路径
realpath path
realpath .
realpath ../.
运行此命令后,realpath 会返回真实绝对的路径或者文件名,同时验证除文件名后者路径名(最后一个组件)外的每个目录是否存在。如果路径中的任何非末尾目录不存在,那么 realpath 将返回错误消息并退出(而不是生成一个可能不存在的路径)。
基本示例
各个选项的说明
- -e 指定的路径或者文件名中的每个前级路径以及最后的一个元素都必须存在,否则该命令执行失败。
- -m 指定的字符串代表的文件或者路径不需要真实存在,也就是说不检查字符串是否是文件系统的路径名或者文件名。
- -q 这个选项在上文中已经讲解,即不对realpath执行出错进行打印。
- -p 在解析路径时会解决遇到的所有符号链接(symlinks),确保返回的是最终指向的实际文件或目录的绝对路径(默认行为)。
- --relative-to=DIR 这个选项允许用户指定一个基目录DIR,这样输出的结果将是相对于这个基目录的真实、相对路径。
- --relative-base=DIR 这个选项与--relative-to=DIR类似,只是在处理相对路径时会以绝对路径输出结果。
- -z realpath可以同时处理多个路径或者文件名,默认依次按行打印结果,这个选项将结果直接拼成一行。
- -s 这个选项要求不对符号链接进行扩展,即输出结果中仍以符号链接的形式输出。
以上就是realpath命令的全部内容。