linux操作系统下,cd .. 命令为什么可以回到上一级文件夹?

我在一个文件夹下使用命令

ls -al /

会得到这样的结果:

[root@localhost /]# ls -al
total 16
dr-xr-xr-x.  17 root root  224 Feb 15 17:05 .
dr-xr-xr-x.  17 root root  224 Feb 15 17:05 ..
lrwxrwxrwx.   1 root root    7 Feb 15 17:01 bin -> usr/bin
dr-xr-xr-x.   5 root root 4096 Feb 15 18:10 boot
drwxr-xr-x.  20 root root 3100 Feb 15 18:09 dev
drwxr-xr-x.  80 root root 8192 Apr 11 13:57 etc
drwxr-xr-x.   3 root root   38 Feb 22 12:03 home
lrwxrwxrwx.   1 root root    7 Feb 15 17:01 lib -> usr/lib
lrwxrwxrwx.   1 root root    9 Feb 15 17:01 lib64 -> usr/lib64
drwxr-xr-x.   2 root root    6 Apr 11  2018 media
drwxr-xr-x.   2 root root    6 Apr 11  2018 mnt
drwxr-xr-x.   5 root root  104 Apr  8 17:15 opt
dr-xr-xr-x. 117 root root    0 Feb 15 18:09 proc
dr-xr-x---.   3 root root  221 Apr  8 17:16 root
drwxr-xr-x.  27 root root  820 Apr 11 13:34 run
lrwxrwxrwx.   1 root root    8 Feb 15 17:01 sbin -> usr/sbin
drwxr-xr-x.   2 root root    6 Apr 11  2018 srv
dr-xr-xr-x.  13 root root    0 Feb 15 18:09 sys
drwxrwxrwt.   8 root root  114 Apr 12 03:48 tmp
drwxr-xr-x.  13 root root  155 Feb 15 17:01 usr
drwxr-xr-x.  19 root root  267 Feb 15 17:07 var

就会看到有两个特别的文件夹,一个是.一个是..
但是这两个文件夹又没有做映射,不像/bin这个文件夹直接指向了usr/bin这个路径,我就特别好奇为什么cd ..可以返回到上一级目录,是怎么实现的?

阅读 3.7k
3 个回答
  1. 我不太明白你说的映射是什么?如果是bin -> usr/bin,这个不是啥映射,只是一个符号链接而已。
  2. cd是一个可执行程序,..是它的参数,最终都会到内核文件系统.
  3. 如果你想搞清楚这个问题,需要搞清楚内核文件系统dentryinode等结构的意义。这个网上资料很多,比如<Linux内核源代码情景分析>有专门的文件系统的一章...
  4. 具体到你这个问题,你可以找内核walk_component这个函数(4.4内核),当然早期版本可能名字不太一样,比如叫path_walk啥的.

应该是语法吧,cd命令语法,cd [相对路径或绝对路径或特殊符号] 其中..表示上级目录。 .表示当前目录

新手上路,请多包涵

这个得咨询当初的程序设计者呀,为什么将..设为返回上级^^现在已经是标准了

推荐问题