在 Unix 和 Linux 系统中,** 路径(Path)** 用于定义文件系统中文件和目录的位置。掌握路径的使用对于高效地导航和管理文件至关重要。虽然 Windows 系统也使用路径概念,但由于大多数用户依赖鼠标操作,往往不太注意其细节。而在 Linux 中,路径遵循特定语法,通常使用正斜杠 / 来分隔各级目录。
路径主要分为两类:绝对路径(Absolute Path) 和 相对路径(Relative Path)。下面我们详细解析这两种路径类型。
绝对路径是从根目录(/)开始,完整描述文件或目录位置的路径。无论当前工作目录在哪里,绝对路径始终指向同一个位置。
以正斜杠 / 开头
从根目录 / 出发逐级定位
不依赖当前工作目录
/home/anshu/scripts/myscript.sh这是一个绝对路径,因为它从根目录 / 开始。
假设你想查看位于 /home/kt 目录下的 abc.sql 文件:
如果你在当前目录下执行:
$ cat abc.sql该命令仅在当前目录存在 abc.sql 时才有效。
若文件实际位于 /home/kt/abc.sql,则必须使用绝对路径:
$ cat /home/kt/abc.sql提示:路径中每出现一个
/,就表示进入下一级目录。例如/home/kt表示从根目录进入home,再进入kt,共两级。
相对路径是相对于当前工作目录(可通过 pwd 命令查看)来指定文件或目录位置的路径。它不以 / 开头,而是利用快捷符号进行导航。
不以 / 开头
依赖当前工作目录
使用快捷符号:
. 表示当前目录
.. 表示上一级(父)目录
. 和 .. 的示例假设当前位于 /home/kt/abc:
$ pwd
/home/kt/abc
$ cd .. # 返回上一级目录
$ pwd
/home/kt
$ cd ../.. # 返回上两级目录
$ pwd
/home注意:
..的作用是“向上”移动,而不是向下。结合/使用时(如../..),表示连续返回多级父目录。
假设你当前位于 /home/kt,想要进入子目录 abc(即目标路径为 /home/kt/abc)。
$ pwd
/home/kt
$ cd abc # 相对路径:基于当前位置进入子目录
$ pwd
/home/kt/abc$ pwd
/home/kt
$ cd /home/kt/abc # 绝对路径:从根目录完整指定
$ pwd
/home/kt/abc两种方式结果相同,但适用场景不同:
相对路径适合在已知当前位置且路径较短时使用,简洁高效。
绝对路径适合跨目录跳转或脚本编写,确保路径唯一且明确。
如果当前目录是 /var/log/nginx,那么 ../../etc/hosts 指向哪个绝对路径?
在编写 Shell 脚本时,为什么推荐使用绝对路径而非相对路径?
执行 cd . 命令会发生什么?这个操作有意义吗?为什么?