在命令行中使用相对路径导航文件系统

了解绝对路径和相对路径之间的区别以及如何使用它们,从而节省大量时间和潜在的麻烦。
116 位读者喜欢这个。
5 tools to support distributed sysadmin teams

Opensource.com

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

相对路径使用两个控制序列:单点 (.) 和双点 (..)。单点表示不要移动。双点表示后退一步。当您对驱动器上的内容有些熟悉,并且可以可视化相应的路径时,这些点效果最佳。

将每个目录可视化为房屋中的一个房间可能会有所帮助。例如,知道您有一个主目录,其中包含 PicturesDocuments 文件夹,您可以将每个子目录可视化为从主目录向前迈出一步

Stepping into a directory.

要从一个房间到另一个房间,您必须使用后退一步控制序列返回公共区域,然后向前迈步进入另一个房间。您可以使用 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 目录之前看到三个级别的脚本。

相对路径起初可能会令人困惑,因此在导航计算机时,请坚持使用绝对路径,直到您对相对性的概念感到满意为止。许多人发现它们很有用,而另一些人则不使用它们。一切都是相对的。

标签
Seth Kenlon
Seth Kenlon 是一位 UNIX 极客、自由文化倡导者、独立多媒体艺术家和 D&D 爱好者。他曾在电影和计算行业工作,通常同时从事这两个行业。

5 条评论

我过去发现,有时您需要使用 ./ 来强制某些命令使用当前目录,例如当您在存储库外部下载 RPM 时。
rpm -ivh ./SomeRPM.rpm
dnf install ./SomeRPM.rpm

这是一个非常好的观点,我已经将其作为文章中的一个例子添加进去了。谢谢,Greg!

回复 作者 Greg P

使用 `pushd...popd` 和 `cd -` 怎么样,例如?这些命令可能与主题没有直接关系,但可以为 shell 新手节省大量时间。

很棒的文章。对我很有帮助。检查一下。

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 获得许可。
© . All rights reserved.