路径

作者:Windson Yang
更新时间:April 25, 2018
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明 www.enginego.org。

计算机文件存储

计算机文件的存储结构如下:

/(根目录)
│ 
└── usr
    ├── foo
    │   ├── first.md
    │   └── second.md
    ├── bar
    │   ├── sunkist.toml
    │   ├── cherry.toml

我们平时使用计算机,都会接触到文件夹以及目录,上图中,计算机中只有一个usr文件夹,usr 文件夹中又包含了foo和bar两个文件夹,分别包含两个文件。路径指的是文件/文件夹存放在计算机中的位置。要描述first.md这个文件的位置可以有两种方式,绝对路径和相对路径,其中绝对路径是

/usr/foo/first.md

每个文件/文件夹都只有一个绝对路径,无数个相对路径,如果你不理解的话,没关系,我们从头一步步开始介绍。

当前路径

我们平时用导航软件的时候,首先需要知道的是现在的位置,在计算机中也是一样,我们首先要知道自己在哪里,当你打开终端的时候:

(masOS)
WindsondeMacBook-Air:fun/ windson$

(Windsons)
C:fun\:

这里的”fun/“和”C:fun\“指当前执行命令的地方,也就是你的当前路径。可以通过命令来查看当前路径的绝对路径

(masOS)
WindsondeMacBook-Air:foo/ windson$ pwd
/usr/foo/

(Windsons)
C:foo\: cd
\usr\foo\

pwd_gif

当你在终端中输入命令,默认命令针对的是当前路径。例如输入”ls”,计算机会理解成”ls /usr/foo/“(Windows下输入”dir”,理解为”dir \usr\foo\“),两个命令都会列出当前路径下的所有文件名称。

ls_gif

绝对路径和相对路径

有一天,Cherry在路上遇到Sunkist,它问Sunkist的公司地址在哪里,Sunkist可能有两个答案:

  1. 以这里为起点,西南方向500米的石室大厦
  2. 中国广东省广州市思哲路石室大厦

第一个答案以当前的位置为起点所描述的称为相对路径根据Sunkist当前的位置不一样,它回答的相对路径会不一样,第二个答案从国家到省份城市巨细无遗地描述称为绝对路径,一个文件除非被移动,否则绝对路径是不会变化的。每个文件/文件夹在一台计算机中可能会有无数个相对路径,但是只有一个绝对路径。回到文章最初的文件存储结构,first.md的绝对路径是

/usr/foo/first.md (first.md的绝对路径)

这是从根目录”/“开始一层一层描述的位置。了解相对路径之前先有一点预备知识。在路径命令中”.“以及”..“这两个符号有特殊意义,分别代表当前目录以及上一级目录。如果当前路径是”/usr/foo/”

/usr/foo/ (当前路径)
./ = /usr/foo/ (当前目录)
../ = /usr/ (上一级目录)

所以first.md相对foo目录的路径是

./first.md (first.md相对foo目录的路径)

相对bar目录的相对路径是

../foo/first.md (first.md相对bar目录的路径)

因为

./first.md

表示的是当前目录下的first.md文件(first.md原本就在foo目录里面)

../foo/first.md

表示的是先返回当前目录(/usr/bar/)的上一级目录(/usr/),然后再进入foo目录,找到first.md文件。所以同一个文件/文件夹对于不同的路径,有不同的相对路径。

切换路径

那么当你从一个目录,如何跳转到其他目录呢?我们可以使用系统自带的”cd”命令。

cd [PATH]

.
└── usr
    ├── foo
    │   ├── first.md
    │   └── second.md
    ├── bar
    │   ├── sunkist.toml
    │   ├── cherry.toml

这里的path可以是绝对路径或者相对路径,如果你要从”/usr/foo/“跳转到”/usr/bar/“,你可以使用:

cd /usr/bar/
或者
cd ../bar/

总结

大家了解了路径的基础知识,之后学习环境变量就会很容易理解啦。