如果你正在上班的路上,但你先在一家熟食店吃早餐,你不会在早餐后回家,以便重新开始你的旅程。相反,你会从你所在的地方继续前进,因为你了解你的办公室相对于你当前位置的位置。导航你的计算机也是如此。如果你在终端中将你的工作目录更改为子目录,例如 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 条评论