如果您正在上班的路上,但您先在熟食店停下来吃早餐,您不会在早餐后回到家,以便重新开始您的旅程。相反,您会从当前位置继续前进,因为您了解您的办公室相对于您当前位置的位置。导航您的计算机也是如此。如果您在终端中将您的工作目录更改为子目录,例如 Pictures,您不一定需要再次回家才能进入 Documents。相反,您使用相对路径。
相反,绝对路径始终从硬盘驱动器的开头开始。您知道您已到达开头,通过一个单独的正斜杠 (/),左侧没有任何内容,因为您的驱动器的根级别是最大的容器,其中包含您的所有文件夹和文件。因此,路径 /home/seth(及其简写版本 ~,尽管这不太清楚,因为它缺少最左边的斜杠)被认为是绝对路径。它表示您的硬盘驱动器的基本级别,其中包含 home 目录,而 home 目录又包含 seth(我的用户名)。
任何以正斜杠开头的路径都是绝对路径,这相当于您为了到达距离您现在位置两个街区远的位置而往回走 12 个街区回家。但这并不意味着绝对路径不好。有很多合理的理由使用绝对路径,其中最重要的是它们的清晰度。如果您可以从绝对路径导航您的驱动器,那么请将其用作路标。借助自动完成功能,键入完整路径可以像使用相对路径一样快,特别是使用自动完成功能时。
话虽如此,相对路径可能很方便,在某些情况下至关重要。例如,您永远无法确定 Web 服务器的绝对路径。如果 Web 设计师知道他们在本地目录中保留 Web 字体,并且他们使用绝对路径 /home/webdev/Public/www.example.com/fonts 链接到他们开发笔记本电脑上的那些字体,那么当代码被推送到服务器上的 /var/www/example.com/fonts 时,他们的所有链接都会断开。
除此之外,有时键入 cd ../Documents 而不是 cd /home/seth/Documents 确实更快更容易。
相对路径使用两个控制序列:单点 (.) 和双点 (..)。单点表示不要移动。双点表示后退一步。当您对驱动器上的内容有些熟悉,并且可以可视化相应的路径时,这些点效果最佳。
将每个目录可视化为房屋中的房间可能会有所帮助。例如,如果您知道您有一个主目录,其中包含 Pictures 和 Documents 文件夹,您可以将每个子目录可视化为从主目录向前迈出一步

要从一个房间到另一个房间,您必须使用后退一步控制序列返回公共区域,然后向前一步进入另一个房间。您可以随时使用 pwd(打印工作目录)命令获取您当前的位置
$ pwd
/home/seth/Pictures
$ cd ../Documents
$ pwd
/home/seth/Documents
请记住,单点表示不要移动,它确实如此
$ pwd
/home/seth
$ cd .
$ pwd
/home/seth
拥有一个表示状态不变的特殊命令似乎很奇怪,但它是一个有用的显式指令。例如,如果您要创建一个自定义应用程序来 列出目录的内容 并将其保存在您的主目录中,愚蠢地将应用程序命名为 reboot,那么任何时候您使用该自定义应用程序时,您都希望小心您的计算机确切地知道要执行哪个 reboot 命令。
您可以指定哪个版本的一种方法是为您的自定义且命名不当的应用程序提供显式路径。当您已经位于目录中时,单点会加强您不偏离预期路径的愿望
$ pwd
/home/seth
$ ./reboot
Documents/ Downloads/
Music/ Pictures/
Public/ Spheniscidae/
Videos/ Yugolothae/
您可能需要单点说明符的另一种情况是,当工具默认情况下不查找当前目录中的参数时。例如,dnf 命令假定您告诉它安装的任何软件包都是您需要它从存储库下载的软件包。当您要对已下载的内容执行本地安装时,您可以使用单点将其指向当前目录中的软件包,以便 dnf 可以使用它,而不是尝试在存储库中查找它
$ sudo dnf install ./example.rpm
有时,单点可以用作您期望包含多个级别的路径中的填充字符。例如,以一个 Web 开发人员为例,他使用了多个指向 font 目录的链接,该目录曾经后退三步。但是,最近,这位开发人员将 font 目录移动到与其 HTML 相同的目录中。如果开发人员不将所有 ../../../fonts 实例替换为 ./././fonts,他们的网站将会崩溃。
注意: 在本示例中,将 ../../../fonts 更改为 ./fonts 可以正常工作,但为了本示例起见,假设这样做会破坏一个脚本,该脚本期望在 fonts 目录之前看到三个级别。
相对路径起初可能会令人困惑,因此在导航计算机时,请坚持使用绝对路径,直到您对相对性的概念感到满意为止。许多人发现它们很有用,而另一些人则不使用它们。一切都是相对的。
5 条评论