这两个命令是什么意思呢?
cd ../
cd /..
第一个命令导致我进入树上的两个目录,第二个命令导致我进入根目录。为什么会发生这种情况?
答案1
在/
结尾目录/文件夹的名称是选修的。大多数情况下,在目录名中包含或省略最后的斜杠不会改变命令的效果。
所以cd ../
等同于cd ..
。
不存在的路径开始带有 的/
是相对路径;它们是相对于当前目录。
每个目录都有两个特殊条目:
- 名为 的目录条目
.
,解析为目录本身 - 一个名为的目录条目
..
,解析为目录的父母(即包含该目录的目录)
因此cd ../
将cd ..
目录更改为父母的当前目录。因此,如果您从 开始/home/fazlan
并运行cd ..
或cd ../
,那么您最终将得到/home
。
相反/..
,绝对路径(尽管不常见)。/
是文件系统根目录——如果你沿着目录层次结构一直向上走,就会到达这个目录。(使用相同的父母和孩子隐喻,我们说的/
是祖先文件系统中的所有内容。
因为..
表示“该目录的父目录”,/
表示“文件系统的顶部”,/..
表示“文件系统顶部的父目录”。
但是,谈论目录意味着什么包含 /
?嗯,/
是个例外。因为没有目录包含它,我们说 的/
父级是其本身。因此,在 中/
是..
。/
因此,/..
与 相同/
。
这就是为什么cd ../
会将您从起始位置向上一级目录,而cd /..
会将您带到最顶层。 更优雅且更易读的执行这些操作的方式分别是cd ..
和cd /
。
答案2
第一个是相对路径。第二个是绝对路径。
该参数中的 .. 运算符表示向上移动一位。
斜线不在最前面时,表示划分子目录名。
斜线在前面表示“这是绝对路径。从根目录开始。” .. 被丢弃,因为您无法再进一步退出。(曾经有很多这样的命令允许您中断 chroot)
答案3
单个点 (.) 表示当前目录。事实上,如果你执行 a,cd .
它会将你置于当前目录中(这似乎什么也不做)。如果你要将某些内容从 /dir1 复制到当前目录,你可以这样做:
cp /dir1/somefile.txt .
执行 acd ..
会将您带上一级目录。A 的cd ../
作用相同。如果您想上一级二级别,你需要在末尾添加两个点,如下所示:
cd ../..
要返回根目录,您可以执行cd /
。现在假设我执行了以下命令:
cd /dir1/dir2/dir3/..
这会将我置于 /dir1/dir2 目录中,因为(正如我们上面所确定的)指示..
它向上一级。因此它转到 dir3,然后向上。
通过调用 a,cd /..
您告诉它转到根目录/
,然后向上一级,但它无法做到。因此,它实际上让您停留在根目录中。