了解文件路径以及如何在 Linux 中使用它们

如果您习惯了拖放环境,那么文件路径可能会令人沮丧。在这里了解它们的工作原理,以及一些使使用它们更容易的基本技巧。
128 位读者喜欢这个。
open source button on keyboard

Opensource.com

文件路径是以人类可读的方式表示文件或文件夹在计算机系统上的位置。您已经在互联网上见过文件路径,尽管您可能没有意识到:互联网 URL,尽管像 AOL 和 CompuServe 这样的专有公司进行了古老的斗争,但实际上只是指向其他人计算机上的(有时是动态创建的)文件的路径。例如,当您导航到 example.com/index.html 时,您实际上正在查看 HTML 文件 index.html,它可能位于 example.com 服务器上的 var 目录中。您计算机上的文件也有文件路径,本文将解释如何理解它们,以及它们为什么重要。

当计算机成为家用物品时,它们越来越强烈地模仿现实世界的模型。例如,个人电脑不是使用帐户和目录,而是被称为拥有桌面文件夹,最终,人们潜意识里觉得计算机是进入现实世界虚拟版本的窗口。这是一个有用的类比,因为每个人都熟悉桌面和文件柜的概念,而很少有人了解数字存储和内存地址。

假设您发明了计算机或操作系统。您可能已经创建了一种将常用文件分组在一起的方法,因为人类喜欢分类和组织事物。由于计算机上的所有文件都在硬盘上,因此您可能指定的最大的容器是驱动器本身;也就是说,驱动器上的所有文件都在该驱动器中。

事实证明,UNIX 的创建者也有同样的直觉,只是他们将这些组织单元称为目录文件夹。您计算机驱动器上的所有文件都位于系统的基本(根)目录中。即使是外部驱动器也被带入此根目录,就像您在整理办公室或爱好室时将重要的相关物品放入一个容器中一样。

Linux 上的文件和文件夹被赋予包含常见组件的名称,例如键盘上的字母、数字和其他字符。但是,当文件位于文件夹内,或者文件夹位于另一个文件夹内时,/ 字符会显示它们之间的关系。这就是为什么您经常看到文件以 /usr/bin/python3/etc/os-release 格式列出的原因。正斜杠表示一个项目存储在它前面的项目内。

每个文件和文件夹在 POSIX 系统上都可以表示为路径。如果我的主目录中的 Pictures 文件夹中有文件 penguin.jpg,并且我的用户名是 seth,则文件路径可以表示为 /home/seth/Pictures/penguin.jpg

大多数用户主要与他们的主目录交互,因此波浪号 (~) 字符用作简写。这意味着我可以将我的示例企鹅图片表示为 /home/seth/Pictures/penguin.jpg~/Pictures/penguin.jpg

熟能生巧

无论您是否考虑路径是什么,计算机都会使用文件路径。您不一定需要根据路径来考虑文件。但是,文件路径是了解计算机如何工作的一个有用框架的一部分,如果您希望成为一名开发人员(您需要了解支持库的路径)、一名网页设计师(文件路径可确保您将 HTML 指向适当的 CSS)、一名系统管理员或只是一名高级用户,那么学习以路径的方式思考文件可能会很有用。

如有疑问,拖放

如果您不习惯将硬盘驱动器的结构视为路径,那么为任意文件构造完整路径可能会很困难。在 Linux 上,大多数文件管理器要么原生显示(或可以选择)您所在位置的完整文件路径,这有助于每天加强这个概念

Dolphin file manager

opensource.com

如果您使用的是终端,那么知道现代终端与它们模拟的电传打字机不同,可以通过拖放方式接受文件可能会有所帮助。例如,当您通过 SSH 将文件复制到服务器时,并且不确定如何表示文件路径,请尝试将文件从 GUI 文件管理器拖到终端中。代表该文件的 GUI 对象将被转换为终端中的文本文件路径

Terminals accept drag and drop actions

opensource.com

不要浪费时间输入猜测。只需拖放。

Tab 是你的朋友

在一个以避免使用三个字母的命令而闻名的系统(当两个甚至一个字母的命令可以完成时),请放心,没有经验丰富的 POSIX 用户键入所有内容。在 Bash shell 中,Tab 键表示自动完成,并且自动完成从不说谎。例如,要键入示例文件 penguin.jpg 的位置,您可以从

$ ~/Pi

开始,然后按 Tab 键。只要只有一个以 Pi 开头的项目,Pictures 文件夹 就会自动为您完成。

如果有两个或多个以您尝试自动完成的字母开头的项目,那么 Bash 会显示这些项目是什么。您手动键入更多内容,直到您达到 shell 可以安全 自动完成的唯一字符串。关于这个过程最好的事情不一定在于它可以让你避免打字(虽然这绝对是一个卖点),而是自动完成永远不会出错。无论您多么努力地与计算机作斗争以自动完成不存在的东西,最终,您会发现自动完成比任何人都更了解路径。

假设您在深夜重组时,将 penguin.jpg 从您的 ~/Pictures 文件夹移动到您的 ~/Spheniscidae 目录。您睡着了,醒来后神清气爽,但不记得您已经重组过了,因此您尝试使用自动完成将 ~/Pictures/penguin.jpg 复制到您的 Web 服务器,在终端中。

无论您在 Tab 键上敲击多少次,Bash 都拒绝自动完成。您想要的文件根本不存在于您认为它存在的位置。当您尝试将网页指向您确定已经上传的字体或 CSS 文件,或者将编译器指向100% 确定您已经编译的库时,此功能可能会有所帮助。

这不是你奶奶的自动完成

如果您喜欢 Bash 的自动完成功能,那么一旦您尝试在 Zsh 中进行自动完成,您就会嘲笑它。Z shell,连同 Oh My Zsh 站点,提供了一个充满活力的体验,其中包含针对特定编程语言和环境的插件,包含有用反馈的可视化主题以及充满激情的 shell 用户社区

A modest Zsh configuration.

如果您是一个视觉思考者,并且发现大多数终端的显示停滞不前且令人麻木,那么 Zsh 很可能会改变您与计算机交互的方式。

多多练习

文件路径在任何系统上都很重要。您可能是一个视觉思考者,更喜欢将文件视为文字文件夹内的文字文档,但计算机将文件和文件夹视为数据池中的命名标签。它识别一个数据集合与另一个数据集合的方式是通过遵循其指定的路径。如果您了解这些路径,您也可以开始可视化它们,并且您可以用与您的操作系统相同的语言说话,从而使文件操作更快、更快。

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

4 条评论

您的文本和路径不一致:“POSIX 系统上的每个文件和文件夹都可以表示为路径。 如果我的主目录的 photos 文件夹中有文件 penguin.jpg,并且我的用户名是 seth,则文件路径可以表示为 /home/seth/Pictures/penguin.jpg。”

这应该是 /home/seth/photos/penguin.jpg

感谢您的发现。它已更新。

在我的初稿中,我使用的是我的 [高度定制的] Slackware 系统上的文字 dirs。 后来,我决定使用更常见、更通用的路径名。

回复 作者 John

你省略了关于相对目录的信息,来自当前工作目录。
./somefile.txt 指定当前目录中的文件。
../someotherfile.txt 位于上面的目录中。
../../../someremotefile.txt 位于上面 3 级的目录中。
我主要使用 ~/,例如,如果我想要将(mv)或复制(cp)文件从当前目录复制到相对于我的主目录的某个其他目录。
cp chosenimage.jpg ~/SpecialImages/

我遗漏了吗?还是有专门讨论相对文件路径的这篇文章的续集?

我想我们必须拭目以待!

回复 ,作者是 Greg P

Creative Commons License本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。
© . All rights reserved.