Linux中为什么 “..” 就是上一级目录?

显示目标列表命令:ls

-a:显示所有档案及目录(ls内定将档案名或目录名称为“.”的视为影藏,不会列出);
-i:显示文件索引节点号(inode)。一个索引节点代表一个文件;

Ext2 /3文件系统中的inode

Linux上的文件系统一般来说就是EXT2EXT3,博文《Linux文件系统详解》中对inode的总结为:

1.一个文件占用一个 inode,每个inode有编号

2.Linux 系统存在 inode 号被用完但磁盘空间还有剩余的情况
注意,这里的文件不单单是普通文件,目录文件也就是文件夹其实也是一个文件,还有其他的也是
inode 的数量与大小在格式化时就已经固定了,每个inode 大小均固定为128 bytes (新的ext4 与xfs 可设定到256 bytes)

3.文件系统能够建立的文件数量与inode 的数量有关,存在空间还够但inode不够的情况

4.系统读取文件时需要先找到inode,并分析inode 所记录的权限与使用者是否符合,若符合才能够开始实际读取 block 的内容

想要更深的了解Linux文件系统机制的可以学习博文:https://www.cnblogs.com/bellkosmos/p/detail_of_linux_file_system.html

实验验证

 进入根目录

wxd@DESKTOP-SD6D2NM:/$ cd /

 查看当前的目录的文件索引节点(inode)

wxd@DESKTOP-SD6D2NM:/$ ls -ai
17169973579354190 .     25614222880678456 lib     1407374883572490 sbin
17169973579354190 ..    844424930151137   lib64   1125899906862399 snap
6192449487638721  bin   1407374883572454  media   844424930151744  srv
1688849860268903  boot  2533274790415081  mnt                   1  sys
7318349394915385  dev   1407374883572460  opt     844424930151747  tmp
11821949021852965 etc                  1  proc    1970324836994373 usr
4785074604089911  home  1688849860283122  root    2533274790481388 var
33495522228572247 init  10696049115543003 run

假设进入 /mnt 目录下,并查看 /mnt 目录下的文件索引节点(inode)

在进入 /mnt/e/ 目录下,并查看 /mnt/e 目录下的文件索引节点(inode)

wxd@DESKTOP-SD6D2NM:/$ cd mnt/  && ls -ai
 2533274790415081 .    1407374883553285 c   1407374883553285 e
17169973579354190 ..   1407374883553285 d
wxd@DESKTOP-SD6D2NM:/mnt$ cd e/  && ls -ai
1407374883553285  .                1970324837005878 MyPhoto
2533274790415081  ..               844424930132019  MyPractice
24488322973827116 CloudMusic       281474976710692  $RECYCLE.BIN
281474976742210   MyDocument       281474976710697  System Volume Information
844424930132023   MyDrivers        1688849860291601 TyporaDoc
5066549580823356  MyInstallFiles   1688849860295201 win10Script
3377699720559144  MyLearn          1688849860263989 workZG

由上可以看出:

根目录下'.'的inode号为:             17169973579354190

根目录下 '..' 的inode号为:          17169973579354190

/mnt/ 目录下'.'的inode号为:        2533274790415081

/mnt/ 目录下'..'的inode号为:       17169973579354190

/mnt/e/目录下的'.'的inode号为:  1407374883553285

/mnt/e/目录下的'..'的inode号为:  2533274790415081 

不妨发现:

/mnt/e/目录下的'..'的inode号 与 /mnt/ 目录下'.'的inode号相同

/mnt/ 目录下'..'的inode号 与 根目录下'.'的inode号相同

根目录下'.'的inode号 与 根目录下'..'的inode号相同

得出结论

.为当前目录索引节点

..为上一目录索引节

根目录的上一目录也是它本身。

发布了10 篇原创文章 · 获赞 0 · 访问量 529

猜你喜欢

转载自blog.csdn.net/TurboTab/article/details/104608256
今日推荐