目录
- 路径表示
- 绝对路径
- 相对路径
- 两者区别
- 路径中斜杠的用法
- 正反斜杠对比表
- 一个常见的问题
- 终端切换目录常用cd指令
- 同一盘符内
- 跨盘符
路径表示
在计算机文件系统中,路径是用来指定文件或目录位置的一种方式。路径可以是绝对路径或相对路径:
绝对路径
绝对路径是从文件系统的根目录开始的完整路径,它包含了从根目录到目标文件或目录的每一个目录名。
在Windows系统中,绝对路径通常以盘符开始,例如 C:\Users\Username\Documents\file.txt
。
在类Unix系统(如Linux或macOS)中,绝对路径以根目录的正斜杠 / 开始,例如 /home/username/Documents/file.txt。
相对路径
相对路径是相对于当前工作目录的路径,它不从根目录开始,而是从当前目录或指定的参照点开始。
在相对路径中,. 表示当前目录,… 表示上一级目录。
./
代表的是当前目录,也可以省略直接写文件名或者目录名。../
代表的是上一级目录,也就是父级目录。../../
代表源文件所在目录的上上级目录,依次类推。
两者区别
- 绝对路径不依赖于当前工作目录,因此无论用户在文件系统中的哪个位置,指向的文件或目录都是相同的。
- 相对路径依赖于当前工作目录,因此相同的相对路径在不同的工作目录下可能指向不同的文件或目录。
路径中斜杠的用法
斜杠 “/”—— 撇;反斜杠 “\”—— 捺;先斜杠,后反斜,就是“人”。
在计算机文件系统中,正斜杠/
和反斜杠 \
用于表示路径中的目录分隔符,而//
和 \\
通常用于特定的上下文或特殊情况。下面详细解释它们的用法和区别:
/
(正斜杠):- 类Unix系统(如Linux、macOS)中,/ 是标准的目录分隔符;而web应用最新使用在Unix系统上面,所以 目前所有的网络地址都用/ 作为分隔符。如
https://www.csdn.net/?spm=1001.2101.3001.4476
- 也可以用于 表示根目录。
- 类Unix系统(如Linux、macOS)中,/ 是标准的目录分隔符;而web应用最新使用在Unix系统上面,所以 目前所有的网络地址都用/ 作为分隔符。如
//
(双正斜杠):- 在某些情况下,// 用于表示网络位置或共享资源的路径。
- 在Unix-like系统中,// 后面通常跟一个主机名,表示一个网络文件系统,例如://192.168.1.1/share。
- 在Windows系统中,// 后面跟一个驱动器号,表示一个网络驱动器的映射,例如://192.168.1.1/share。
- 在URL中,// 用于分隔协议和域名,例如:https://www.example.com。
\
(反斜杠):- 在Windows文件浏览系统中,\ 是标准的目录分隔符,用于分隔目录和子目录,例如:
C:\Users\Username\Documents
。 - 在Windows文件路径中,盘符后紧跟一个反斜杠,例如:C:</font>。
- 在Windows文件浏览系统中,\ 是标准的目录分隔符,用于分隔目录和子目录,例如:
\\
(双反斜杠):- 在Windows系统中,\ 用于表示一个转义字符,用于在路径中包含特殊字符,如
\n
。在文件目录表示中,为了避免转义字符的问题,通常需要使用两个反斜杠\\。 - 在Windows网络路径中,\ 后面跟一个计算机名,表示访问该计算机上的共享资源,例如:\ServerName\SharedFolder。
- 在Windows系统中,\ 用于表示一个转义字符,用于在路径中包含特殊字符,如
正反斜杠对比表
斜杠类型 | 用途 | 操作系统 | 网址 |
---|---|---|---|
/ | 除号、间隔符、目录分隔 | 用作目录时,适用于unix系统和Windows系统 | 在网址(URL)中,/ 可作为请求目录 |
\ | 只能用作目录 | 用作目录时,适用于Windows系统 | \ 不能用于网址(URL)中 |
一个常见的问题
有时我们会看到这样的路径写法,C:\\Windows\\System
,也就是用两个反斜杠来分隔路径,这种写法在网络应用或编程中经常看到,事实上,上面这个路径可以用C:/Windows/System
来代替,不会出错。但是如果写成了C:\Windows\System
,那就可能会出现各种错误,这个路径字符串交给C编译器编译,实际写入内存的字符串并没有包含反斜杠\
,甚至紧跟在反斜杠后面的字母也一起被转义成了其它的字符,再次调用的话势必会出问题。
字符串解析不仅仅局限于C编译器,Java编译器、一些配置文件的解析、Web服务器等等,都会遇到对字符串进行解析的这个问题,由于传统的Windows采用的是单个斜杠的路径分隔形式,导致在对文件路径进行解析的时候可能发生不必要的错误,所以就出现了用双反斜杠\\
分隔路径的形式。不管解析引擎是否将反斜杠解析成转义字符,最终在内存中得到的都是"",结果也就不会出问题了。
❗️❗️❗️所以在编程过程中,涉及读取文件的操作,需要注意这一点❗️❗️❗️
终端切换目录常用cd指令
同一盘符内
-
cd+直接路径
切换到指定为文件
-
cd\
切换到根目录
-
cd..
cd../
切换回上一层目录
跨盘符
- 要直接切换到其他盘的子目录,首先需要切换到指定盘符的根目录
- 不加cd(没反应),直接写指定盘符即可,不能加
\
会报错
- 切换到根目录后,就可以切换对应的子目录了